记录点零碎的小知识点。
目录
8.使用gradle plugin版本高于4.2时,可能会自动开启资源优化
1.BindingView中引用include中的控件
需要给include一个id,再通过这个id去拿里面的控件id。
<include
android:id="@+id/include_mine"
layout="@layout/item_family_list" />
binding.includeMine.clItemFamily
Databinding依赖
buildFeatures {
dataBinding = true
}
2.将文件复制到手机根目录中
adb push filePath/test.txt /sdcard
3.android string占位符
<string name="money">金额:%1$s</string>
填充:
String.format(getString(R.string.money),"100")
4.动态更改shape色值
if (view.background != null) {
(view.background as GradientDrawable).apply {
this.setStroke(2, colorResId)//设置边框,width为像素
this.setColor(SysUtil.getColor(colorResId))//设置填充色值
}
} else {
val drawable =
(SysUtil.getDrawable(R.drawable.shape_stroke_corner8_blue) as GradientDrawable).apply {
this.setStroke(2, colorResId)//设置边框,width为像素
this.setColor(SysUtil.getColor(colorResId))//设置填充色值
}
val d = view.compoundDrawables
view.setCompoundDrawablesWithIntrinsicBounds(drawable, d[1], d[2], d[3])
}
5.查看apk签名文件信息
keytool -printcert -jarfile xxx.apk
6.虚线
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="line">
<stroke
android:width="1dp"
android:color="#979797"
android:dashWidth="6dp"
android:dashGap="3dp" />
<size android:height="0.5dp" />
</shape>
7.Kotlin 协程切换
GlobalScope.launch(Dispatchers.Main) {
var urlName :String?= null
withContext(Dispatchers.IO){
delay(2000)
urlName = ossRep.upload(view.context, mRequest)
}
val mUrl = "${mRequest.getImgRootUrl()}$urlName"
}
8.使用gradle plugin版本高于4.2时,可能会自动开启资源优化
开启资源优化后,资源名称被混淆,会导致补丁工具在生成补丁时一直卡在"开始构建补丁.....",无法正常解析apk包。解决方案:在gradle.properties 中新增android.enableResourceOptimizations=false,重新生成基线包和修复包,然后再生成补丁。
android.enableResourceOptimizations=false
9.Android 动态设置margin
父布局为ConstraintLayout时,如果你想使用原布局中的布局参数,仅仅是想修改marginTop的值,那么可以这样做:
val params = tvHomeLogin.layoutParams as ConstraintLayout.LayoutParams
val top = barHeight + barHeight / 2
params.setMargins(params.leftMargin, top, params.rightMargin, params.bottomMargin)
tvHomeLogin.layoutParams = params
父布局为LinearLayout时,改为线性布局对应的布局参数就可以了
10.TabLayout移除点击效果
设置下面属性即可
app:tabRippleColor="@color/transparent"
11.约束布局
layout_constraintHorizontal_bias 水平偏移
layout_constraintVertical_bias 垂直偏移
当控件因为wrap_content,top_toTop及bottom_toTop导致的居中时,可以用偏移量改变控件位置
12.请求体忽略字段
@Transient
var selected: Boolean = false
13.去掉字体内边距
<item name="android:includeFontPadding">false</item><!-- 去掉字体内边距 -->
有时候UI设计师不会考虑字体自带的内边距,然而我们的字体基本都是有内边距的,所以我的想法是在app的主题中去掉字体内边距。
14.adb查看当前界面activity名称
查看activity:
adb shell dumpsys window windows | findstr "Current"
adb shell
dumpsys activity | grep -i run
mac有效:
adb shell "dumpsys window | grep mCurrentFocus"
查看fragment:
adb shell "dumpsys activity top | grep '#0: ' | tail -n 1"
15.aab转apk
示例:
java -jar bundletool-all-1.8.2.jar build-apks --bundle=/Users/xwk/Documents/谷歌上架/aab/app-release.aab --output=/Users/xwk/Documents/谷歌上架/aab/test.apks --ks=/Users/xwk/Documents/谷歌上架/aab/xx.jks --ks-pass=pass:123456 --ks-key-alias=xxx --key-pass=pass:123456
安装:
java -jar E:\BoundleTool\bundletool-all-1.11.2.jar install-apks --apks=D:\ProjectWork\ProjectWorkSurvaval2\SourceCode\APK\YouLoft\9.26\MountAndMagic9.26.apks
16.adb查看cup类型
adb shell getprop ro.product.cpu.abi
17.adb查看jks公钥
keytool -importkeystore -srckeystore app/mxchip_bta.jks -destkeystore app/mxchip_bta.jks -deststoretype pkcs12
18.查看依赖树
./gradlew :app:dependencies --configuration compile
19.adb发送广播携带参数
adb shell am broadcast -a xxx.xxx --es intentKey "intentValue"