2021-11-11 开发心得

一. 如何做阴影效果

带阴影效果的圆

2 关键步骤

  1. 阴影不支持硬件加速, 所以先关闭硬件加速
  init {
        setLayerType(LAYER_TYPE_SOFTWARE, null)
    }
  1. 关键函数
    Paint#setShadowLayer(float radius, float dx, float dy, int color)
  • radius: 越大越模糊
  • dx: 模糊的横轴偏移
  • dy: 模糊的纵向偏移
  • color: 阴影的颜色

实例技巧

先画阴影, 再实心图,最后画boarder;
完成底图,然后具体的内容

  1. 准备不同的Paint(阴影, 底图, 实线);
  2. 计算Path
  3. onDraw中用不同的Paint 画同一个Path

二. 在线查看Android 源码

Android Code Search

今日源码收获:

  • Handler 的Loop中天生存在问题:(置空,修改JVM)
  • Dialog 天然会内存泄漏(Listener变弱引用,Handler中IdleHandler的使用)
  • JVM中的GC逻辑

三.Navigation的使用

  • 可以跨不同的Navigation文件
  • AFragment-BFragment后, BFragment消失并返回数据给AFragment
// 进入下一个Fragment
findNavController().navigate(
    XXXXFragmentDirections.acctionA_TO_B(data)
)

// 其中Data 在navigation文件 action 节点中注册

// 注册一个BFragment返回的监听
 viewLifecycleOwner.lifecycle.addObserver(
        NavDestinationChangedObserver(
            pageNavId,
            controller,
            onDismiss
        )
    )



// 传送数据给上一个Fragment 
findNavController().previousBackStackEntry!!.savedStateHandle.set(key, value)
dismiss()
//


进入疑问?

  1. ViewModel 创建的规律
  2. by ViewModel 有什么不同

同一个Fragment 中 使用 byViewModel
得到同一个ViewModel.

不同的Fragment 中 使用 by ViewModel
能得到同一个ViewModel

在不同的Fragment中使用 by activityViewModels
得到同一个ViewModel

结论 : by XXViewModel获得的ViewModel的最大意义是 作用域问题

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 16宿命:用概率思维提高你的胜算 以前的我是风险厌恶者,不喜欢去冒险,但是人生放弃了冒险,也就放弃了无数的可能。 ...
    yichen大刀阅读 6,106评论 0 4
  • 公元:2019年11月28日19时42分农历:二零一九年 十一月 初三日 戌时干支:己亥乙亥己巳甲戌当月节气:立冬...
    石放阅读 6,916评论 0 2
  • 今天上午陪老妈看病,下午健身房跑步,晚上想想今天还没有断舍离,马上做,衣架和旁边的的布衣架,一看乱乱,又想想自己是...
    影子3623253阅读 2,932评论 3 8