Android-DrawText详解
1. 单行文本 FontMetrics.ascent 或 Paint.ascent 注意这些都是间距 ascent = ascent线的y坐标 - baseline线的y坐标; // 为负值 descent = descent线的y坐标 - baseline线的y坐标; top = top线的y坐标 - baseline线的y坐标; bottom …
Android-转场动画
1. OverridePendingTransition Activity过场动画,支持有限 2. ActivityOptions 可实现①效果 Flutter的hero动画 (ShareElement) ActivityOptionsCompat.makeCustomAnimation() ActivityOptionsCompat.makeCl…
Android-Battery Historian
1. 安装Docker 2. 启动窗口 docker run -p 9999:9999 gcr.io/android-battery-historian/stable:3.0 --port 9999 3. 获取bugreport文件 Android7.0及以上 adb bugreport bugreport.zip Android6.0及以上 ad…
Flutter-异步
1. FutureBuilder Center( child: FutureBuilder( // initialData: "加载中", // future: Future.delayed(Duration(seconds: 2), () => "123"), future: Future.delayed(Duration(seconds:…
Flutter-动画
AnimatedSwitcher> controller.drive(Tween(begin:xxx,end:xxx)) Tween(begin:xxx,end:xxx).chain(CurveTween(curve: Curves.elasticInOut)).animate(controller) CurveTween(curve: Intev…
Android-CyclicBarrier,CountDownLatch,Future
1. CyclicBarrier 线程同步。cyclicBarrier.reset(); 可以重新执行 所有线程全部完成才可以开始后续操作 CyclicBarrier cyclicBarrier = new CyclicBarrier(3); new Thread(() -> { try { Thread.sleep(10_000); Sys…
Android-Shape自定义
import android.graphics.Color import android.graphics.drawable.GradientDrawable import android.view.View import kotlin.Exception sealed class ShapeDrawable { var next: ShapeDr…
Android-小点记录
1. Fragment状态保存和恢复 可以参考ViewPager的FragmentStatePagerAdapter适配器中的处理 // 保存 FragmentManager.saveFragmentInstanceState(fragment) // 还原 Fragment.setInitialSavedState(SavedState) 2. …
Android-View可见性检测
fun View.onVisibilityChange( viewGroups: List<ViewGroup> = emptyList(), // 会被插入 Fragment 的容器集合 needScrollListener: Boolean = true, block: (view: View, isVisible: Boolean…
Android-混淆
1. 混淆设置参数 -optimizationpasses 5 # 代码混淆的压缩比例,值介于0-7,默认5 -verbose # 混淆时记录日志 -dontoptimize # 不优化输入的类文件 -dontshrink # 关闭压缩 -dontpreverify # 关闭预校验(作用于Java平台,Android不需要,去掉可加快混淆) -do…