![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
jetpack
文章平均质量分 92
chsmy2018
学无止境,任何技能都是慢慢积累出来的。
展开
-
Jetpack Compose初体验之自定义图表
开发项目的时候,难免会遇到原生控件无法满足,需要自定义的情况,今天通过绘制几个图表来练习一下Jetpack Compose 中的自定义View。线形图绘制原理和之前xml中一样,只不过实现的方式变了一些,比之前简单了很多,比如下面通过path来绘制线形图。构建好path之后,直接在Canvas中绘制就OK了。如果想要对图标进行双指缩放,可以通过Modifier.graphicsLayer().transformable()来监听手势。通过rememberTransformableState来监听手指原创 2021-07-19 16:40:36 · 1033 阅读 · 0 评论 -
Jetpack Compose初体验(2)
上一篇Jetpack Compose初体验中练习了Compose中的布局、自定义布局、自定义view、动画、手势等操作,这些都是在一个页面中完成,一个应用不能只有一个页面,今天来练习一下Jetpack Compose中的导航。普通导航在Jetpack Compose中导航可以使用Jetpack中的Navigation组件,引入相关的扩展依赖就可以了 Navigation官方文档implementation "androidx.navigation:navigation-compose:2.4.0-a原创 2021-07-14 10:36:35 · 989 阅读 · 0 评论 -
Jetpack Compose初体验
概览Jetpack Compose 是用来构建Android界面的新款工具包,前段时间beta版本刚发布的时候就已经心痒难耐的想要尝试了,最近轻松点了赶紧尝试一波。以前我们都是通过xml布局,通过findViewById()找到控件之后手动给控件赋值。这样的缺点首先是解析xml生成view对象需要通过反射浪费性能,然后是手动给控件赋值容易出错,比如过个地方控制一个view的显示和隐藏,随着控制它的地方越来越多,维护起来也越来越复杂。这几年,整个行业都开始向声明式界面模型转换,这个模型大大的简化了我们构原创 2021-04-29 16:10:43 · 1002 阅读 · 2 评论 -
Jetpack之MotionLayout
MotionLayout 继承自 ConstraintLayout ,用来管理布局中元素的运动轨迹和动画。可向后兼容到API 14。MotionLayout 可以让布局转换和复杂运动更加简单,提供了属性动画,TransitionManager和和 CoordinatorLayout的各种能力。先来个简单的效果试试水一个MotionLayout的布局有两部分组成,一个是我们的正常的xml文件,另一个是与之对应的在目录res/xml/文件夹下面对应的一个xml文件用来描述动画场景的文件,下面我们就称之为场原创 2020-07-21 22:40:05 · 337 阅读 · 0 评论 -
JetPack之Paging3.0
之前写过一篇Paging2.x的是使用和分析,Paging2.x运行起来的效果无限滑动还挺不错的,不过代码写起来有点麻烦,功能也不是太完善,比如下拉刷新的方法都没有提供,我们还得自己去调用DataSource#invalidate()方法重置数据来实现。最近google出了3.0的测试版,功能更加强大,用起来更简单,现在来开始尝试一把先看看官网对Paging3.0的功能介绍分页数据缓存到内存中,保证应用在处理页面数据的时候,更有效的使用系统资源同时多个相同的请求只会触发一个,确保App有效的使用网络原创 2020-06-26 21:21:17 · 1098 阅读 · 0 评论 -
JetPack之使用CameraX完成拍照和拍视频
前段时间CameraX的Beta版发布了,这几天有时间也来尝试一下。Beta版本是对外测试版本,意味着它已经走出实验室走向生产,API的调用基本稳定不会大改了,bug也会更少可以用于生成环境。之前使用Camera1和Camera2开发相机功能的时候需要调用非常复杂的API,而且由于Android手机的碎片化严重,不同手机对相机功能的支持度也不一样,因此很多做相机相关应用的公司都会封装自己的相机库来简化相机的使用步骤和处理兼容性问题。CameraX其实就是Google开发的一个用来简化相机开发时候API的原创 2020-05-31 15:28:22 · 3183 阅读 · 6 评论 -
Jetpack之自定义Navigation轻松实现路由导航
之前的一篇文章Android Jetpack之Navigation对Navigation的使用进行了练习,并且看了一下Navigation的源码。虽然Navigation的功能很强大,不过在xml中配置感觉还是不够灵活,随着项目的增大,页面多了之后xml会变的非常庞大不利于维护。而且使用Navigation做底部导航的时候,每次都会新建Fragment,这个也不是我们想要的,因此来改造一下Navi...原创 2020-04-19 15:41:37 · 1795 阅读 · 5 评论 -
Android Jetpack之Navigation
1 前言Android Jetpack 的导航组件Navigation可以很方便的管理fragment/activity的导航。注意:如果您要在 Android Studio 中使用 Navigation 组件,则必须使用 Android Studio 3.3 或更高版本。导航组件有三个关键部分NavGraph:导航图,包含一组页面和它们之间的跳转关系,比如A页面跳到B页面 B页面跳...原创 2020-02-20 22:32:38 · 1333 阅读 · 1 评论 -
Android Jetpack之Paging
Jetpack中的Paging组件可以轻松的给RecyclerView增加分页加载的功能,通过预加载实现无限滑动的效果。先说一下这无限滑动效果,项目中的分页加载一般分两大种情况:一种是滑到底部上拉松手后加载或者滑到底部后自动显示一个加载动画加载。一种是当还没滑动到底部的时候就开始加载了,当滑到底部的时候数据可能已经加载完成并续上了,这样就有一种无限滑动的感觉,Paging默认就是这种模式。...原创 2020-02-10 16:01:59 · 569 阅读 · 0 评论 -
事件总线LiveDataBus
最近在使用谷歌官方的架构组件重构项目,在事件总线的选择方面,以前用的是EventBus,因为现在项目中使用了LiveData,想到了之前看过的美团的一篇文章Android消息总线的演进之路里面讲了使用LiveDataBus,来代替RxBus、EventBus。感觉想法非常好,于是项目中开始使用LiveDataBus,使用是非常简单的,不过来需了解实现原理。开始之前最好先了解一下LiveData可...原创 2019-04-27 19:29:27 · 1091 阅读 · 1 评论 -
Android Jetpack之Room
Room是在Sqlite数据的一个抽象层,拥有更强大的数据访问能力。导入依赖: def room_version = "2.1.0-alpha06" implementation "androidx.room:room-runtime:$room_version" annotationProcessor "androidx.room:room-compiler:$room...原创 2019-04-21 11:11:17 · 1032 阅读 · 0 评论 -
Android Jetpack之ViewModel
ViewModel概念ViewModel是用来保存应用UI数据的类,会在配置变更后继续存在(比如旋转屏幕),我们知道当手机旋转的时候,Activity会被销毁重建,里面的数据都会丢失,或导致界面崩溃,以前我们解决这个问题一般重写onSaveInstanceState方法来保存一些关键数据,在onCreate或者onRestoreInstanceState方法中恢复数据,但此方法仅适用于可以序列化...原创 2019-04-21 11:10:14 · 778 阅读 · 0 评论 -
Android Jetpack之LiveData
LiveData概述LiveData是一个可观察的数据持有者类,和常规的observable不同,它是用来感知生命周期的,这意味着它遵守其他应用组件(activity、fragment、service等)的生命周期。这就确保它只会更新处于活动状态的组件。如果一个类实现了android.arch.lifecycle.Observer,那么LiveData就认为这个类是STARTED或者RESUM...原创 2019-04-21 11:09:26 · 371 阅读 · 0 评论 -
Android Jetpack之Lifecycles
Android中大多数的组件都有生命周期函数,生命周期由操作系统或者framework层的代码来管理,它们是Andorid的核心运行方式。我们平时写程序必须遵循生命周期的原则,否则会造成内存泄露甚至程序崩溃我们通常会在activity和fragment的生命周期函数内来做一些初始化操作和释放资源的一些操作,但是这样会导致代码组织不良,容易出错,使用生命周期感知组件,可以让生命周期方法移动到组件上...原创 2019-04-21 11:08:02 · 301 阅读 · 0 评论