![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Kotlin
JonnyLan
暂时忽略!
展开
-
JetPack知识点实战系列十三:Kotlin Flow项目实战-网络、数据库和UI的应用
前一章节我们讲解了Kotlin Flow的基本用法,这一节我们来实践将Kotlin Flow应用在Android应用中。我们从三个方面进行讲解:网络数据的请求结合Room在数据库中的使用在编写UI界面中的使用MVVM架构中留给Flow的位置我们再来看一下Google给我们规范的MVVM架构图:MVVM架构中数据回流的方式主要是利用LiveData来实现:鉴于LiveData的功能很单一,我们可以将部分LiveData的实现方式替换成Kotlin Flow来实现。这样就变成了如下的.原创 2020-11-27 16:11:16 · 2180 阅读 · 3 评论 -
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 · 3124 阅读 · 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 · 11868 阅读 · 6 评论 -
JetPack知识点实战系列十:ExoPlayer进行视频播放的实现
本节教程我们将来介绍下ExoPlayer的视频播放功能。我们在本节将主要介绍以下知识点:ExoPlayer高级自定义的实现视频的全屏播放和退出全屏播放ExoPlayer在RecyclerView中的复用ExoPlayer介绍MediaPlayer和ExoPlayer是Google官方支持的两种播放器,但是ExoPlayer比MediaPlayer多了支持基于 HTTP 的动态自适应流 (DASH)、SmoothStreaming 和通用加密等功能。并且重要的是它独立于Android代码框原创 2020-10-19 23:40:21 · 2430 阅读 · 1 评论 -
JetPack知识点实战系列九:Room数据库Migration
在APP的迭代过程中,会遇到给数据库表增加字段或者增加表的的需求,这时候就涉及到数据库的Migartion。本节我们将来介绍一下Room的Migration。上节我们用数据库建了一张play_list_tags表实现了歌单标签的增删改查功能。本节我们建一张net_cache表,用来缓存一些主要界面的网络数据内容,这样当网络异常时可以用数据库中的缓存内容填充界面,不至于整个空白一片,优化用户的使用体验。新建 Entity我们新建一个NetCache,代码如下:@Entity(tableName =原创 2020-10-02 19:14:06 · 286 阅读 · 1 评论 -
JetPack知识点实战系列八:Room数据库实现增删改查和事务处理
本节我们来利用Room实现歌单标签的增删改查,即安装APP的时候默认添加一些歌单标签存入**“我的歌单标签”数据库中,在歌单标签编辑页面可以对“我的歌单标签”进行增删改查,并且能对“我的歌单标签”**的歌单进行序列重排。大体效果如下图所示:本节可能您将学习到如下知识点:Room的使用方法,包括Entity,Dao,Database的使用等创建数据库时进行一些初始化操作网络数据和数据库数据同时获取,然后组装数据数据库的增删改查事务的实现添加Room依赖在app的build.gradle中原创 2020-10-02 13:43:05 · 2055 阅读 · 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 · 1299 阅读 · 1 评论 -
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 · 2188 阅读 · 4 评论 -
JetPack知识点实战系列三:使用 Coroutines, Retrofit, Moshi实现网络数据请求
本节教程我们将使用Retrofit网络请求库实现网易云音乐的推荐歌单的数据请求。请求的过程中我们将使用Coroutines实现异步操作,并且利用Moshi进行网络数据的解析。我们的接口来自于开源库NeteaseCloudMusicApi,这个NodeJS API 库的文档非常,并且支持的接口非常多。这个库的安装请详阅该项目的参考文档。kotlin - Coroutine 协程协程是kotlin的一个异步处理框架,是轻量级的线程。协程的几大优势:可以用写同步的代码结构样式实现异步的功能非常容易原创 2020-09-10 00:19:39 · 2280 阅读 · 0 评论