摘要:
###需求: 当文字超过限定行数时,需要在文字末尾显示“…全文”; 解决行末标点换行,和英文换行问题; 文字分块,包含多种颜色,多种点击事件(单独这个需求可以使用Spannable解决); ###准备工作: 先在网上查了一遍,需求1、2都没有找到相关Api解决,需要自定义去测量、计算、绘制文字; 解
阅读全文
posted @ 2020-10-10 15:05
FirstLetterZ
阅读(684)
推荐(0)
摘要:
jsBridge线程是WebView内html与app完成js交互的线程,此线程拥有自己的ViewRootImpl,可以创建UI视图,但是视图刷新必须使用创建视图的线程。所以,尽量不要在app中的jsBridge线程创建视图,在此线程中创建出的视图无法在主线程中刷新(不会崩溃,但是会有错误信息)。
阅读全文
posted @ 2020-10-10 14:56
FirstLetterZ
阅读(302)
推荐(0)
摘要:
核心原理:先比较预期计算结果和当前计算结果,如果相同,则将当前值替换为预期计算结果(或当前计算结果),否则重新计算,重新比较。 例如:A,B两个线程同时修改一个变量v=1,分别对v执行加1操作,此时A,B线程的预期计算结果均为v+1=2;如果A先执行了操作,则有预计计算结果=2,当前计算结果=v+1
阅读全文
posted @ 2020-10-10 14:54
FirstLetterZ
阅读(68)
推荐(0)
摘要:
基本思想依然是,使用注解完成表与class,列与field的对应关系,通过创建中间模型拼接最终语句。 主要修改: 改用kotlin语言; 增加了预备的列的个数,即增加了ColumnEnum值; 对应关系改为枚举类SQLiteRelevance; 修改了sql语句的拼接方式,改用void execSQ
阅读全文
posted @ 2020-10-10 14:52
FirstLetterZ
阅读(115)
推荐(0)
摘要:
当使用图片设置为某视图的背景图时,如果该视图的width或height设置为wrap_content,并且没有设置最小值的情况下,将以图片的长或宽作为最小值。
阅读全文
posted @ 2020-10-10 14:47
FirstLetterZ
阅读(274)
推荐(0)
摘要:
背景:创建自定义视图的高度是一个固定的高度,需要使xml中的定义的高度无效(自定义顶部状态栏); 过程:刚开始,我在构造函数中调用了setLayoutParams方法设定了高度,但是,发现视图加载出来的高度还是xml中定义的高度; 原因:xml解析的过程中,xml解析器会使用解析过程得到的属性值,创
阅读全文
posted @ 2020-10-10 14:45
FirstLetterZ
阅读(409)
推荐(0)
摘要:
更新日期:2020.07.02 依赖版本: 'cn.jiguang.sdk:jcore:2.3.4' 'cn.jiguang.sdk:jverification:2.6.2' 新版本对认证activity内容进行了包装,导致原本对反射调用失效,新的实现如下: @SuppressLint("Resou
阅读全文
posted @ 2020-10-10 14:42
FirstLetterZ
阅读(848)
推荐(0)
摘要:
在Android 10系统下,gradient的默认方向不一定为从左向右(也可能是手机ROM的原因),需要添加android:angle="0"才可以;另外,angle必须大于等于0,否则为默认方向 左->右 android:angle="0" 下->上 android:angle="90" 右->
阅读全文
posted @ 2020-10-10 14:37
FirstLetterZ
阅读(188)
推荐(0)
摘要:
原本区分应用渠道跳转不同应用市场,但是在小米手机上出现了无响应的情况,最终放弃了跳转指定应用市场的方法,改为仅做跳转不做控制; String pkgName = context.getPackageName(); Uri uri = Uri.parse("market://details?id="
阅读全文
posted @ 2020-10-10 13:51
FirstLetterZ
阅读(1654)
推荐(0)
摘要:
SharedPreference的内容会保留一份缓存在HashMap中,所以不要保存大数据,否则会增加GC频率; apply方法在QueuedWork.waitForFinish方法执行时,才将数据保存到文件中,而此方法由ActivityThread执行handleStopActivity时触发(A
阅读全文
posted @ 2020-10-10 11:51
FirstLetterZ
阅读(206)
推荐(0)
摘要:
Android系统没有提供默认的截屏事件监听方式,需要开发者自己想办法实现。查看了网上推荐的实现方式,主要是通过内容观察者(ContentObserver)监听媒体数据库的变化,根据内容名称(路径)中是否包含关键字,判断是否为截屏事件。 关键字: private static final Strin
阅读全文
posted @ 2020-10-10 11:43
FirstLetterZ
阅读(2791)
推荐(0)
摘要:
产生原因: 谷歌在Material Design中推出android:stateListAnimator属性,用来实现在可视状态之间平滑过渡。这个属性可以通过android:stateListAnimator进行设置,可以使控件在点击时产生不同的交互。而从5.0版本开始,谷歌对Button添加了点击
阅读全文
posted @ 2020-10-10 10:55
FirstLetterZ
阅读(423)
推荐(0)
摘要:
fun convertPrimitiveType(type: Type): Class<*>? { return when (type) { java.lang.Void::class.java -> kotlin.Unit::class.java java.lang.Float::class.ja
阅读全文
posted @ 2020-10-10 10:39
FirstLetterZ
阅读(357)
推荐(0)
摘要:
/** * Returns the value associated with the given key, or null if * no mapping of the desired type exists for the given key or a null * value is expli
阅读全文
posted @ 2020-10-10 09:35
FirstLetterZ
阅读(990)
推荐(0)
摘要:
由于泛型在运行时被抹除,所以无法直接通过对象实例或class获取,在老版本的Gson里可以通过一下方法获取实际类型: Type type = new TypeToken<Test>(){}.getType(); 但是Gson 2.8.6内TypeToken构造方法已经不再公开: 解决方案: 使用Gs
阅读全文
posted @ 2020-10-10 09:31
FirstLetterZ
阅读(1008)
推荐(0)
摘要:
内存泄漏(Memory Leak)是指程序中己动态分配的堆内存由于某种原因程序未释放或无法释放,造成系统内存的浪费,导致程序运行速度减慢甚至系统崩溃等严重后果。 以上是百度百科给出的定义,而在Android开发我们遇到的内存泄漏的原因,几乎都是“长生命周期的对象持有对短生命周期对象的引用,导致短生命
阅读全文
posted @ 2020-10-10 09:30
FirstLetterZ
阅读(125)
推荐(0)
摘要:
作用与LayoutInflater类似,区别在与AsyncLayoutInflater在子线程中完成View的创建,在通过callback将创建的视图返回。 核心方法:public void inflate(@LayoutRes int resid, @Nullable ViewGroup pare
阅读全文
posted @ 2020-10-10 09:28
FirstLetterZ
阅读(1325)
推荐(0)
摘要:
android:tint,android:tintMode:作用于ImageView,对ImageView内的mDrawable(内容图片)着色,以及着色模式设定。 对应设定方法: void setImageTintList(@Nullable ColorStateList tint) void s
阅读全文
posted @ 2020-10-10 09:27
FirstLetterZ
阅读(1293)
推荐(0)