![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JetPack
JonnyLan
暂时忽略!
展开
-
JetPack知识点实战系列十四:View Binding替代ButterKnife和Kotlin synthetics
解决findViewById的忧伤在早期的Android开发中,我们都是通过一系列的findViewById去找到XML Layout文件中的View。当XML文件中View特别多的情况下,这样的写法非常的繁琐。主要有如下几种方式可以解决这个问题:ButterKnife:使用这个库,我们可以通过注解的方式非常方便进行View的绑定和处理Click事件。Kotlin Android Extensions sythentics:它是一个Kotlin插件,使用它可以非常方便的在Activities, F原创 2020-12-08 19:40:14 · 867 阅读 · 0 评论 -
JetPack知识点实战系列十二:Kotlin Flow基础知识详解
阅读过实战系列三的文章的同学可能有印象,我有提到过Kotlin Flow和Room数据库能很好的配合使用。此外,不久前官方推出了DataStore也是基于Kotlin Flow,所以本节我们先来了解下Kotlin Flow的使用方法。Flow 引入的场景Kotlin的官方解释引入Flow的场景是:Return multiple asynchronously computed values over time这句话很重要,它包括几个关键含义:返回值有多个返回值是分开的返回的是异步结果原创 2020-11-17 17:46:07 · 3095 阅读 · 0 评论 -
JetPack知识点实战系列十一:MotionLayout让动画如此简单
MotionLayout是ConstraintLayout的子类,所以它是一种布局类型,但是它能够为布局属性添加动画效果,是开发者实现动画效果的另一个新的选择。MotionLayout基础让动画跑起来在入门练习的例子中,我们先利用MotionLayout实现一个View从左下(x25%,y75%)的位置移动到右上(x75%,y25%)的位置,如下图所示:添加依赖implementation 'androidx.constraintlayout:constraintlayout:2.0.2'原创 2020-10-22 15:41:16 · 11810 阅读 · 6 评论 -
JetPack知识点实战系列十:ExoPlayer进行视频播放的实现
本节教程我们将来介绍下ExoPlayer的视频播放功能。我们在本节将主要介绍以下知识点:ExoPlayer高级自定义的实现视频的全屏播放和退出全屏播放ExoPlayer在RecyclerView中的复用ExoPlayer介绍MediaPlayer和ExoPlayer是Google官方支持的两种播放器,但是ExoPlayer比MediaPlayer多了支持基于 HTTP 的动态自适应流 (DASH)、SmoothStreaming 和通用加密等功能。并且重要的是它独立于Android代码框原创 2020-10-19 23:40:21 · 2329 阅读 · 1 评论 -
JetPack知识点实战系列九:Room数据库Migration
在APP的迭代过程中,会遇到给数据库表增加字段或者增加表的的需求,这时候就涉及到数据库的Migartion。本节我们将来介绍一下Room的Migration。上节我们用数据库建了一张play_list_tags表实现了歌单标签的增删改查功能。本节我们建一张net_cache表,用来缓存一些主要界面的网络数据内容,这样当网络异常时可以用数据库中的缓存内容填充界面,不至于整个空白一片,优化用户的使用体验。新建 Entity我们新建一个NetCache,代码如下:@Entity(tableName =原创 2020-10-02 19:14:06 · 275 阅读 · 1 评论 -
JetPack知识点实战系列八:Room数据库实现增删改查和事务处理
本节我们来利用Room实现歌单标签的增删改查,即安装APP的时候默认添加一些歌单标签存入**“我的歌单标签”数据库中,在歌单标签编辑页面可以对“我的歌单标签”进行增删改查,并且能对“我的歌单标签”**的歌单进行序列重排。大体效果如下图所示:本节可能您将学习到如下知识点:Room的使用方法,包括Entity,Dao,Database的使用等创建数据库时进行一些初始化操作网络数据和数据库数据同时获取,然后组装数据数据库的增删改查事务的实现添加Room依赖在app的build.gradle中原创 2020-10-02 13:43:05 · 2037 阅读 · 3 评论 -
JetPack知识点实战系列七:vlayout嵌套横向RecyclerView和Banner 实现主页的展示,自定义Moshi的JsonAdapter
本节教程我们来实现云音乐的主页展示,实现的效果如下图所示:本节内容您将学习到如下内容:vlayout的介绍vlayout嵌套横向RecyclerView的使用Banner三方库的简单使用自定义Moshi的JsonAdapter来解析同一个字段不同的数据类型的数据vlayout架构分析vlayout是RecyclerView的LayoutManager扩展库,VirtualLayoutManager这个类负责RecyclerView的UI布局。继承于RecyclerView.Adapter原创 2020-09-24 14:30:02 · 1267 阅读 · 1 评论 -
JetPack知识点实战系列六:Paging实现加载更多和下拉刷新,错误后重新请求
前面的教程我们遗留了一个问题:我们的列表只能请求第一页,本节我们将实现分页加载的效果和下拉刷新的效果。本节内容您将学习到如下内容:用Paging库实现加载更多用Paging库和SwipeRefreshLayout结合实现下拉刷新给RecyclerView添加Footer加载失败进行重试Android帧动画的实现方式Paging的优势Paging库之前,我们进行分页加载使用的方法是监听RecyclerView的滚动事件,当快滚动到底部的时候进行新数据的请求。这个方法有一定的问题,譬如当用原创 2020-09-15 13:42:22 · 1338 阅读 · 1 评论 -
JetPack知识点实战系列五:歌单页面MVVM架构改造及其ViewModel和LiveData的使用介绍
JetPack有提供规范的架构模式,我们使用JetPack,必须要遵循它的规范,接下来我们将利用JetPack实现MVVM的架构模式。MVC和MVVM介绍MVC我们目前的代码主要逻辑和数据都在Activity/Fragment中,有人定义为MVC架构,有人却不这么认为。因为Activity/Fragment和View又是很难完全区分开来,和Java后台开发中完全的MVC模式有差别。我们暂且把这中模式定义为MVC模式吧。咱们画个简单的示意图:通过示意图我们可以看出,Activity/Fragmen原创 2020-09-13 20:04:43 · 419 阅读 · 2 评论 -
JetPack知识点实战系列四:使用 TabLayout,ViewPager2 ,RecyclerView实现实现歌单广场页面
为了实现循序渐进的学习,本节先来利用TabLayout,ViewPager2 ,RecyclerView实现实现歌单广场页面。网易云音乐APP的页面效果如下所示:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Yf7B3v0n-1599837193687)(https://upload-images.jianshu.io/upload_images/4401597-e979233ce1e3e93e.gif?imageMogr2/auto-orient/strip)]首先我们原创 2020-09-11 23:14:05 · 2157 阅读 · 4 评论 -
JetPack知识点实战系列三:使用 Coroutines, Retrofit, Moshi实现网络数据请求
本节教程我们将使用Retrofit网络请求库实现网易云音乐的推荐歌单的数据请求。请求的过程中我们将使用Coroutines实现异步操作,并且利用Moshi进行网络数据的解析。我们的接口来自于开源库NeteaseCloudMusicApi,这个NodeJS API 库的文档非常,并且支持的接口非常多。这个库的安装请详阅该项目的参考文档。kotlin - Coroutine 协程协程是kotlin的一个异步处理框架,是轻量级的线程。协程的几大优势:可以用写同步的代码结构样式实现异步的功能非常容易原创 2020-09-10 00:19:39 · 2271 阅读 · 0 评论 -
JetPack知识点实战系列二:使用Navigation架构一步步实现APP的主体框架以及Navigation相关知识介绍
本节教程我将带大家来一步步实现主页的框架,一个Bottom Navigation框架,然后介绍Navigation的相关知识。本节教程您学习到如下主要内容:BottomNavigation的搭建和原理介绍Navigation的的传值Navigation跳转动画的实现Navigation文件的拆分Deeplink导航的实现搭建 Bottom Navigation Activity让我们开始吧,我们先搭建APP的主框架。界面如下所示:界面主要有三部分组成,顶部的标题栏,中间的显示内容的原创 2020-09-05 17:12:34 · 1454 阅读 · 5 评论