android
文章平均质量分 72
android开发过程中点滴记录
pumpkin的玄学
路漫漫其修远兮,吾将上下而求索。
展开
-
Handler 同步屏障&异步消息
简单来说,同步屏障就是一套为了让特殊消息更快执行的一个机制。这里我们假设一个场景:我们向主线程发送了一个UI绘制操作Message,而此时消息队列中的消息非常多,那么这个Message的处理可能会得到延迟,绘制不及时造成界面卡顿。同步屏障机制的作用,是让这个绘制消息得以越过其他的消息,优先被执行。MessageQueue中的Message,有一个变量,他标志了这个Message是否是异步消息;标记为true称为异步消息,标记为false称为同步消息。同时还有另一个变量target。原创 2023-09-08 18:25:17 · 613 阅读 · 2 评论 -
android:构建一个可以传入任何参数的ViewModelProvider.Factory
构建一个可以穿入任何参数的ViewModelProvider.Factory原创 2023-07-24 00:05:57 · 985 阅读 · 2 评论 -
Android:WebView使用常见问题汇总(持续更新)
从事Android以来,几乎离不开`WebView`的使用。但是使用`WebView`的过程中,总会出一些令人意想不到的问题,故打算写一篇文章专门用来记录开发过程中遇到的问题吧。如果大家有遇到什么奇怪的问题,欢迎补充完善。......原创 2022-08-28 20:59:11 · 1773 阅读 · 4 评论 -
Android 从我方界面启动三方界面,如何巧妙地检测三方页面的生命周期呢?
从我方界面启动三方界面,如何巧妙地检测三方页面的生命周期呢?原创 2022-07-31 16:10:49 · 612 阅读 · 3 评论 -
Android:自定义布局多状态切换容器MultiStateView
1. 列举常用的状态:`加载中`、`网络错误`、`错误`、`空数据`、`正常内容`、`其他...` 2. 不同状态的view可以通过状态来获取、控制、显示 3. 不同的状态的view可以通过xml添加、也可以在程序中调用函数添加 4. 可以在状态切换之前/之后监听,并且拦截是否真正的进行状态切换 5. 其他优化,是否包含切换动画等等原创 2022-05-01 23:12:40 · 1979 阅读 · 1 评论 -
以横屏启动Activity,上一个Activity的生命周期重走了且跟随设置了横屏。WHY?
以横屏启动`Activity`,上一个`Activity`的生命周期竟然重走?为什么呢?原创 2022-04-16 16:32:19 · 2456 阅读 · 1 评论 -
Android 自定义验证码View,可控制输入数量,可定制化样式。高度可定制化。Kotlin版本
Android 自定义验证码View,可控制输入数量,可定制化样式。高度可定制化。Kotlin版本。原创 2022-01-23 11:29:01 · 2672 阅读 · 2 评论 -
终极解决方案:App被系统回收之后,再次打开Fragment产生覆盖的问题。附带原理解析。
fragment为什么会在activity被回收的时候保存呢?保存到哪里了呢?怎么恢复的呢?如何解决?原创 2022-01-19 18:48:50 · 3715 阅读 · 4 评论 -
Android 常见内存泄漏总结、避免踩坑、提供解决方案。
静态实例持有非静态内部类耗时任务相关的匿名内部类/非静态内部类Handle内存泄漏Context被长期持有View被静态修饰大对象/监听器释放资源对象注意关闭集合对象原创 2021-12-19 20:52:00 · 2333 阅读 · 2 评论 -
Android:屏幕显示适配实战 , 详解 PX DPI DP/DIP Density的区别。
Android不同机型屏幕适配实战。简单深入理解,附带源码。原创 2021-12-12 18:33:24 · 4022 阅读 · 4 评论 -
Android 仪器化单元测试(instrumented unit tests) Androidx kotlin版本
android仪器化单元测试全面详解,全新kotlin androidx版本。快速上手不迷路。原创 2021-12-10 16:26:28 · 2337 阅读 · 0 评论 -
Android:彻底清除APP数据的几种方案总结
用途用于APP内部的重置功能实现。方案一:利用命令行pm clear 包名,系统级别清除App数据优点和任务管理器里面清除所有数据的操作一致,会删除所有的APP数据。重新进入APP还需重新申请权限。缺点系统会直接杀掉APP进程,无法进行拉起APP的操作。代码 public static Process clearAppUserData(String packageName) { Process p = execRuntimeProcess("pm clear " + p原创 2021-11-18 16:26:56 · 14662 阅读 · 3 评论 -
android:performClick的用法——自定义View增加点击事件更配performClick噢!
文章目录浅析如何使用模拟点击事件配合自定义View浅析performClick 官方注释Call this view’s OnClickListener, if it is defined. Performs all normal actions associated with clicking: reporting accessibility event, playing a sound, etc.调用此视图的 OnClickListener(如果已定义)。 执行与点击相关的所有正常操作:报告原创 2021-10-17 11:09:08 · 2860 阅读 · 0 评论 -
android:ems 属性详细分析
TextView ems 属性是干嘛的?我们先看一下官方的提供的方法注释 /** * Sets the width of the TextView to be exactly {@code ems} wide. * * This value is used for width calculation if LayoutParams does not force TextView to have an * exact width. Setting this v原创 2021-08-23 19:15:58 · 4618 阅读 · 0 评论 -
Android:onActivityCreated和onCreate到底那一个先调用呢?一 记曾看到刀尖舔血的代码
总所周知,Application可以注册一个activity的生命周期回调。如下:application.registerActivityLifecycleCallbacks(object:ActivityLifecycleCallbacks{ override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { TODO("Not yet implem.原创 2021-08-05 18:29:47 · 2020 阅读 · 0 评论 -
Android:手把手教你自定义头像View,可根据名字自动生成背景色+文字的显示效果,含动画效果。
首先看需要做成的效果,如下所示????:如上所示:我们需要做到如下效果,在图片加载出来之前或者加载失败需要展示一个自定义的背景色+文字的样式,加载完成之后显示对应的图片,且包含动画效果。由于:需要项目本身包含有:com.github.open-android:RoundedImageView:v1.0.0 库。 所以直接基于RoundedImageView来自定义HeadImageView,这样就不需要处理圆形了,只需要关注背景色、文字、动画以及可配置性就可以了。现在就可以简单的,我们可以暂时写这么原创 2021-07-30 12:49:34 · 1523 阅读 · 0 评论 -
Android:处理RecyclerView局部刷新视图导致闪烁,以及TextView多行设置ellipsize失效的问题
RecyclerView局部刷新视图导致闪烁问题:RecyclerView 调用notifyItemChanged()方法更新单个Item时,此Item有闪烁因为RecyclerView 默认实现了一个DefaultItemAnimator,如果RecyclerView 的item布局过于复杂且包含 重新测量等复杂步骤的时候,就会产生闪烁。所以最好的解决办法就是不产生动画效果。看到网上有很多的设置方法。最常见的是关闭,是这么写的。 recyclerView.getItemAnimator().set原创 2021-07-22 15:45:23 · 2653 阅读 · 3 评论 -
Android:自定义可设置最大最小长度和宽度的LinearLayout
需求原因需要一个本身自适应长宽,但有最大值或者最小值限制的布局.所以需要自定义View,重新onMeasure进行布局绘制。我们继承LinearLayout,准备重写onMeasure方法class AdaptiveLinearLayout@JvmOverloadsconstructor(context: Context, attrs: AttributeSet? = null, defStyleAttr: Int = 0, defStyleRes: Int = 0) : LinearLayout原创 2021-07-21 14:32:43 · 4723 阅读 · 3 评论 -
glide利用ViewTarget解决加载ImageView闪烁的问题
glide利用ViewTarget解决加载ImageView闪烁的问题由于需求的原因,无法使用placeholder设置占位图,只能在监听到图片加载失败后,设置图片的背景等在做一些其他的操作。但是存在一个问题,即加载失败的url由于没有缓存,如果下次刷新还是加载失败的话,明明监听的是失败的回调逻辑,但是设置的默认背景图还是会闪一下。代码如下。Glide.with(iv).load(url) .addListener(new RequestListener<Drawa原创 2021-07-15 14:46:31 · 1471 阅读 · 0 评论 -
使用glide加载图片失败后,设置imageView ImageDrawable或者Batmip无效
使用glide加载图片失败后,设置imageView ImageDrawable或者Batmip无效如标题,一个小需求在监听Glide图片加载失败后,直接设置imageView为固定背景,代码如下所示: Glide.with(ivHead).load(new GlideUrl(headUrl, headers)) .addListener(new RequestListener<Drawable>() { @Overr原创 2021-06-07 19:13:58 · 1434 阅读 · 0 评论 -
Android:详解activity生命周期
Android:详解activity生命周期 Android时使用任务(Task)来管理活动的,一个任务就是一组存放在栈里的活动的集合。这个栈也称作返回栈。每当启用一个新的activity,他就会进入栈中,并且出于栈顶的位置。当我们按下返回键或者调用finish()方法去销毁一个活动时,出于栈顶的activity就会出栈,这时前一个活动就会出于栈顶的位置,系统总会显示出于栈顶的activity给用户。 activity定义了7个回调方法,覆盖率生命周期的每一个环节,下面一一来介绍这7个方法。onC原创 2020-07-26 23:17:08 · 1514 阅读 · 0 评论 -
android:调用原生的activity(即:ACTION_GET_CONTENT)进行文件选择,实现多个文件一起选择-盘点遇到的坑
android:调用原生的activity(即:ACTION_GET_CONTENT)进行文件选择,实现多个文件一起选择前几天做一个东西,需要从手机选择文件。我选择最简单的调用android自带的选择文件activity进行操作,这里做一下总结。这里简单把实现的过程分为三个步骤:打开选择文件activity拿到选到文件的uri资源将uri转换为对应的path,在path转化为File,就拿到对应的文件了首先是打开选择文件的activity,使用Intent显示调用,下面为对应的代码:Int原创 2020-08-19 22:51:48 · 5304 阅读 · 2 评论 -
Android:SwipeRefreshLayout+RecyclerView冲突解决
Android:SwipeRefreshLayout+RecyclerView.onScrollListener冲突解决提供一个简单的解决方式,首先重写onScrollListener内部的onScrolled方法,即滚动完成后,我们进行判断。判断RecyclerView可见的item位于第一个的时候,使swipeRefresh获取焦点,不走ScrollListener,当不在第一个不在屏幕内显示的时候,走ScrollListener。下面放代码recyclerView.addOnScrollLis原创 2020-08-25 21:53:59 · 594 阅读 · 0 评论 -
android:加载html,太宽,适配解决方案。
android:加载html,太宽,适配解决方案。首先改的话必须的改html,所以我们直接在代码里插入html,设置他自动适配手机屏幕的宽度。String css = "<style type=\"text/css\"> " + "img {" + "width:100%;" +//图片宽度填充屏幕 "height:auto;" +//图片高度自动 "}" +原创 2020-08-25 22:03:53 · 866 阅读 · 0 评论 -
android:解决 ScrollView嵌套RecyclerView后无法惯性滑动的问题
android:解决 ScrollView嵌套RecyclerView后无法惯性滑动的问题这个只需要设置一下两个方法即可。//解决 ScrollView嵌套RecyclerView后无法惯性滑动的问题 recyclerView.setHasFixedSize(true); recyclerView.setNestedScrollingEnabled(false);...原创 2020-08-25 22:05:57 · 647 阅读 · 1 评论 -
Android判断横竖屏(平板/手机)
第一种方法:Configuration configuration = getResources().getConfiguration();if (configuration.orientation == Configuration.ORIENTATION_LANDSCAPE) {Log.d(TAG, "configuration : 横屏");}//横屏是ORIENTATION_PORTRAIT第二种方法:int requestedOrientation = getRequestedOrie原创 2020-12-07 16:46:44 · 2880 阅读 · 0 评论