Android-进阶
文章平均质量分 75
charlie-captain
一个人的夜
展开
-
ViewPager动态初始化最优方案
ViewPager动态初始化最优方案前景默认初始化3个tab, 但是当联网获取到数据之后, 需要再新增一个tab,而且tab的顺序需要调整.源码分析定义变量缓存所需数据//缓存fragmentprivate val fragments = mutableMapOf<Tab, Fragment>()//缓存fragment的ItemIdprivate val keyIdMap = mutableMapOf<Tab, Int>()//缓存tab的上一次的排序位置pri原创 2020-10-23 19:11:40 · 615 阅读 · 0 评论 -
Fragment的getActivity怎么初始化的
Fragment的getActivity怎么初始化的很好奇什么时候能够拿到activity, 所以今天分析一下源码.mHost@Nullablefinal public FragmentActivity getActivity() { return mHost == null ? null : (FragmentActivity) mHost.getActivity();}很明显, 这里是通过mHost拿到的activity, 所以我们看mHost在哪里初始化的.直接找mHost的赋原创 2020-10-10 12:17:56 · 240 阅读 · 0 评论 -
Glide 是如何运作的,这篇3分钟看懂
Glide 是如何运作的,这篇3分钟看懂流程with初始化glide,线程池(Engine)[默认使用GlideExecutor, 根据cpu计算线程数量,最小4个 ]监听生命周期和网络load 设置资源地址-资源的属性into 为target设置request, 加入线程池开始任务如何回调into方法into( glideContext.buildImageViewTarget(view, transcodeClass), /*targetLis原创 2020-09-30 14:12:32 · 145 阅读 · 0 评论 -
Android Fragment的add,show,hide一定要一起用吗?
Fragment的add,show,hide一定要一起用吗?问题两个fragment, fragmentTest1和fragmentTest2, 初始化fragmentTest1, 代码如下:supportFragmentManager.beginTransaction() .add(R.id.content, fragmentTest1, FragmentTest1::class.java.simpleName) .commit()然后在一个点击事件跳转到fragmentTest原创 2020-09-29 13:33:48 · 770 阅读 · 0 评论 -
Android LiveData 为什么会初始化?
LiveData 为什么会初始化?问题:为什么有的时候在进入一些页面的时候,livedata.observe{ 这里的代码会执行 }?LiveData源码解析setValue@MainThread protected void setValue(T value) { assertMainThread("setValue"); mVersion++; //注意这个 mData = value; dispatchingVa原创 2020-09-25 17:34:35 · 719 阅读 · 0 评论 -
Android 尝试适配广角镜头的方案
广角镜头适配基于Camera2 API, 获取设备相机信息, 判断相机是否广角//获取镜头数量, 略//通过物理尺寸, 对焦距离, 算出FOV(Field of view), 相机水平弧度, 垂直弧度val size = characteristics.get(CameraCharacteristics.SENSOR_INFO_PHYSICAL_SIZE)val focalLens1 = characteristics.get(CameraCharacteristics.LENS_INFO_A原创 2020-05-26 16:52:14 · 4062 阅读 · 4 评论 -
Android 一行代码实现炫酷Button
前言以前有接触过这个,不过也只是看到github上面的,看起来很炫酷,最近有看动画这一方面,所以突然兴致大发, 简简单单实现一个自定义的View, 纯动画, 没有什么需要计算的地方.效果图使用方法在app/build.gradle中添加下面一行代码: dependencies { compile 'com.example.thatnight:animbutton:1.5原创 2017-09-19 19:38:03 · 1718 阅读 · 1 评论 -
Android Looper、Handler与Message邂逅
前言太久没更新会让大家觉得我是个很懒的人, 这也一直困扰着我, 学不到东西,以后怎么找工作啊, 不说了,很快就要找实习了,赶紧备些干货.Looper每个线程都只可以有一个LooperLooper无非就是先Looper.prepare(),再Looper.loop()private static void prepare(boolean quitAllowed) { if (sThreadLo原创 2017-09-16 21:19:22 · 266 阅读 · 0 评论 -
Android IPC机制-小试牛刀
前言觉得自己已经大二下学期了, Android方面的知识仍然是停滞不前,明年就要去找实习了,感觉十分的虚,项目也做得差差不多,总感觉自己在做重复的东西,学到的东西不是很多,所以最近买了本《安卓开发艺术》,据说这本书是进阶用的,所以我打算研读这本书,这本书里的知识基本是面试所问的基础知识。简介IPC:Inter-Process Communication,简称:进程间的通信。进程和线程进程:一个执行原创 2017-04-17 23:24:37 · 627 阅读 · 0 评论 -
Android IPC机制-AIDL详解
什么是AIDL?官方解释:AIDL(Android 接口定义语言)与您可能使用过的其他 IDL 类似。 您可以利用它定义客户端与服务使用进程间通信 (IPC) 进行相互通信时都认可的编程接口。 在 Android 上,一个进程通常无法访问另一个进程的内存。 尽管如此,进程需要将其对象分解成操作系统能够识别的原语,并将对象编组成跨越边界的对象。 编写执行这一编组操作的代码是一项繁琐的工作,因此 An原创 2017-03-24 22:36:45 · 605 阅读 · 0 评论