自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(198)
  • 资源 (1)
  • 收藏
  • 关注

原创 简单天气--Kotlin+JetPack+协程+MVVM架构

????????????简单天气简单天气——遵循 Material Design 风格天气APP,使用彩云天气api,基于MVVM模式结合JetPack组件库:LiveData、ViewModel、Lifecycle、Navigation、Room组件以及协程+Retrofit网络请求,使用Kotlin语言开发的一款天气app。项目地址Weather(github) ( ???? ???? ???? 如果觉得该项目对你有帮助留个star再走叭(๑• . •๑))下载体验当前版本(1.0)项目展示

2020-06-23 13:37:30 3431

原创 Jetpack -- DataStore

DataStore简介Jetpack DataStore 是用来替代SharedPreferences的一种数据存储的解决方案,可以使用Kotlin协程和Flow异步,体现数据处理的一致性。注意:DataStrore适用于key-value型的数据存储,Room适用于大型或者复杂的数据存储DataStore使用DataStore : key-value存储和访问数据,不保证类型安全Proto DataStore : 使用Protocol-Buffers存储键值对或类型化对象,保证类型

2021-01-01 20:40:06 130 2

原创 获取Bitmap中主色调的取色器

颜色空间RGB色彩空间RGB颜色空间以R(红)、G(绿)、B(蓝)三种基本色为基础,进行不同程度的叠加,呈现不同的颜色–>三原色模式RGB颜色空间 可以使用一个立方体来表示颜色,黑、蓝、绿、青、红、紫、黄、白8种常见颜色分别位居立方体的8个顶点,通常将黑色置于三维直角坐标系的原点,绿蓝红分别分别置于xyz轴上,个参数的取值范围是:R : 0 - 255, G : 0 - 255, B : 0 - 255其中(0,0,0) ->(255,255,255)的提对角线表示从黑色到白色的灰度值

2020-12-19 22:57:18 88 1

原创 View.post() 分析

view.post() 使用目的获取View的属性子线程处理耗时任务,并抛到主线程执行view.post()分析首先在onCreate()方法中使用post()方法override fun onCreate(savedInstanceState: Bundle?) { Log.d(TAG, "onCreate") super.onCreate(savedInstanceState) setContentView(R.layout.activity_main)

2020-11-01 21:32:56 65

原创 Android 使用Navigation 跳转页面时发生crash

crash问题日志Fatal Exception: java.lang.IllegalArgumentExceptionnavigation destination com.xxx.yyy:id/action_aFragment_to_bFragment is unknown to this NavController解决// 在执行跳转语句之前使用下面方法对当前fragment 进行判断if (Navigation.findNavController(it).currentDestination

2020-10-25 23:05:15 120

原创 Gradle 命令操作

常规操作 – 使用帮助Gradle Wrapper帮助命令行./gradlew -?./gradlew -h./gradlew -help查看所有可执行的Tasks ./gradlew tasks // 会以分组的形式列出所有的Task列表Gradle Help任务./gradlew help --task //显示tasks任务的帮助信息:类型、分组信息、可使用的参数强制刷新依赖./gradlew --refresh-dependencies assemble多任务调用

2020-09-06 23:24:22 68

原创 Gradle 构建脚本基础

Setting 文件Setting文件大多是为了配置子工程,一个根工程可以包含多个Module也就是子工程,子工程只有在Setting文件里配置类Gradl才会识别,才会在构建的时候被包含进去Build文件每个Project都会有一个Build文件,该文件是project构建的入口,可以在此对project进行配置,配置版本,依赖库等等Project和Tasks一个Project又包含多个Task,即多中操作,比如打包一个jar包,复制一份文件,编译代码等等创建任务的两种方式如下 (两

2020-09-03 00:16:21 32

原创 View 生命周期分析

View 生命周期View生命周期函数意义onFinishInflateView中所有的子元素均被映射成xml时触发onAttachedToWindow该方法在当前View被附到一个Window上时被调用onMeasureView确定所有子元素的大小onSizeChanged当View大小发生变化时触发onLayout当View分配所有子元素的位置和大小时触发onDrawView渲染内容细节onWindowFocusChanged当窗口

2020-08-02 22:55:41 106

原创 Jetpack -- App StartUp

定义App StartUp是Google Jetpack新增的一个组件,该组件在App启动时提供了一个直接、高效的方式来初始化组件,同时开发者可以使用App Startup这个组件来简化启动顺序并且显示地设置初始化顺序,通过App Startup这个组件提供了一个ContentProvider来运行所有依赖项的初始化,避免第三方库单独通过ContentProvider进行初始化,从而提高了应用的启动速度,使用效果如下图所示:图片来自 Husayn Hakeem由上面两个图对比可见,App

2020-07-12 22:59:43 447

原创 Jetpack组件结合MVVM架构的Kotlin版本WanAndroid来啦
原力计划

WanAndroid-Kotlin 项目根据鸿神提供的WanAndroid开放Api来制作的WanAndroidApp, 基本实现了所有的功能,使用kotlin语言开发,基于Material Design+AndroidX + MVVM + ViewModel + LiveData + RxJava + Retrofit等优秀的开源框架,上次开发的 WanAndroidMvvm版本不是很完善,所...

2020-06-06 16:05:29 3212

原创 Kotlin Coroutine + retrofit + Okhttp3 网络请求实战篇
原力计划

背景最近看到很多项目都将RxJava + Retrofit 替换成了 Coroutine + retrofit,首先Coroutine + retrofit学习成本相对于Rxjava来说较低,而且最重要的一点是Kotlin的下称实现线程切换的代码更加精简,逻辑相对更加清晰一些注意:没有学习过DSL 以及 协程 的可以阅读以下两篇Kotlin DSLKotlin 协程封装RxJava ...

2020-06-06 16:05:20 413

原创 移动端软件架构设计

什么是架构软件架构是一张开发蓝图,是一个整体的规划,即软件工程的指导方针,软件开发的主要目标如图所示:优秀的软件架构提供迅速响应,扩展灵活;还要具备美观性,代码要简洁,易于阅读、维护、能使维护者对功能产生更清晰的认识,能够快速地处理变化软件架构设计的关注点软件架构设计应该关注 – 变化软件架构设计的本质和目的本质降低软件熵目的:降低因需求增加导致的软件熵增加从而导致的成本增加架构设计模式原则架构的细节需要运用一些经典的设计模式原则,比较常用的原则之一为SOLID原则

2020-05-18 19:11:35 417

原创 ViewModel源码分析

ViewModel创建ViewModelProvider(this).get(CustomModel::class.java)点进源码查看ViewModelProvider实现// 实际上调用的方法是ViewModelProvider(activity.getViewModelStore, factory)public ViewModelProvider(@NonNull ViewModelStoreOwner owner) { this(owner.getViewModelStore

2020-05-16 21:12:35 415

原创 Jetpack -- WorkManager

简介WorkManager适合处理一些定时执行的任务,它可以根据操作系统的版本自动选择底层是使用AlarmManager实现还是JobScheduler,降低我们的使用成本,同时他还支持周期性任务、链式任务处理等功能。WorkManager可以在应用退出或者手机重启的情况下,还能够执行之前注册的任务主要功能添加网络可用性或充电状态等工作约束调度一次性或周期性异步任务监控和管理计划...

2020-05-03 19:58:56 393

原创 Flutter 动画封装

AnimatedWidgetAnimatedWidget对addListener和setState进行了封装,示例如下import 'package:flutter/material.dart';class AnimatedLogo extends AnimatedWidget {  // listenable类似之前写的addListener,此时可以监听a...

2020-04-28 15:24:14 411

原创 ViewModelScope 简介与使用

简介当在ViewModel中引入协程,如果直接使用CoroutineScope,那么需要在onCleared()方法中取消协程,如果忘记取消协程那么会导致出现内存泄漏等各种问题,此时需要使用ViewModel扩展属性viewModelScope来实现协程作用域。viewModelScope源码分析val ViewModel.viewModelScope: CoroutineScope&...

2020-04-26 20:04:35 1898

原创 Flutter实现层叠滑动效果

实现效果项目地址滑动效果使用PageView滑动来控制当前显示的位置Stack( children: <Widget>[ // 两者堆叠在一起。通过PageView滑动的Controller来控制当前显示的page CardScrollWidget(currentPage), Positioned.fill( child: Page...

2020-04-26 18:17:18 1889 1

原创 Jetpack -- Navigation

简介NavHost: 是一个存放页面的容器,同时也是一个控制器(Activity /Fragment)NavController:切换页面,需要定制切换路线NavGraph:利用图形化的方式定制切换路线Navigation组件配合ViewModel实现数据共享1.首先创建一个Activity, 两个Fragment以及一个ViewModelfragment的xml如下...

2020-04-25 23:05:27 73

原创 Flutter 实现自定义侧滑--side menu

实现效果项目源码对flutter中的动画不了解的可以看这篇 Flutter 动画入门实现首先将界面拆解成两部分 menu 和 homePage 使用Stack组件将两者包裹起来(类似使用FrameLayout)return Scaffold( backgroundColor: backgroundColor, body: Stack( children: <W...

2020-04-22 15:25:04 320

原创 Flutter 动画入门

简介Flutter动画核心类:Animation类,它可以判断当前动画的状态(开始,停止,移动,前进,反向),它是由AnimationController管理的,并通过Listeners和StatusListeners管理动画状态的所发生的变化,我们先对动画有了大体的了解,下面我们对其中提到的类进行逐一学习这次主要学习flutter动画中的 平移,缩放,旋转,透明度,插值器,是为之后的自定义...

2020-04-21 21:59:57 147

原创 Flutter实现的精致的聊天界面

偶然实现聊天UI的视频教程链接项目源码链接实现效果如下:

2020-04-20 19:39:38 322

原创 Kotlin--小抄(十一)协程
原力计划

简介协程是一种并发设计模式,可以使用协程来简化异步代码为什么需要协程顺序执行的代码是同步的,即下面的工作要执行必须等待之前的工作执行完毕,每一行代码都会阻塞当前的线程,显然主线程阻塞会导致明显的卡顿 ,界面呈现速度缓慢或界面冻结,对触摸事件的响应速度很慢,所以我们需要将耗时的任务放到主线程之外运行多线程执行代码,可以在不同的线程上执行顺序的代码,然后通过异步函数完成线程之间的切换工作...

2020-04-18 20:43:21 280

原创 Kotlin-小抄(十)Kotlin创建DSL

DSL简介DSL (领域特定语言)指的是专注于特定问题领域的计算机语言,即对一个特定问题的方案模型更高层次的抽象表达,使之更加简单易懂。DSL只是问题解决方案模型的外部封装,这个模型可能是一个API库,也可能是一个完整的框架等在Android中比较典型的例子使用DSL框架Anko来替代传统的xml(类似Flutter创建布局的方式)如下代码块:UI {  &nbs...

2020-04-18 17:00:59 130

原创 Flutter 多语言国际化配置 -- 使用Intl插件

安装插件Android Studio -> File -> Setting -> Plugins -> 搜索Flutter Intl配置项目首先在项目pubspec.yaml中添加如下语句并执行 package getdev_dependencies:... flutter_localizations: sdk: flutter在菜单栏的To...

2020-04-13 20:45:18 1893

原创 Hey Flutter: 体验较佳的WanAndroid Flutter客户端

WanAndroid-Flutter 项目????????????项目基于 Flutter 移动应用框架,采用 Dart 语言编写,继续打造新的WanAndroid,重新打磨之前的flutter版本的WanAndroid, 持续更新…项目地址WanAndroid(github) (留下个star再走叭)下载体验当前版本(1.0)项目展示项目功能待完成功能夜间模式切换语言...

2020-04-09 14:28:54 410

原创 Jetpack -- Room使用简介

简介Room是对 Android中SqlLite数据库的一个抽象,实现了流畅的访问SqlLite数据库基本使用创建Entity实体类@Entitypublic class Word {    // 声明主键    @PrimaryKey(autoGenerate = true) &nb...

2020-03-26 14:57:38 212

原创 Jetpack -- LifeCycles
原力计划

简介android.arch.lifecycle提供的类和接口可以感知activity和fragment的生命周期,可以使得组件自己在activty和fragment的生命周期中的某个状态完成一些操作这样每个组件都可以实现良好的封装,提高了可移植性使用自定义一个Chronometer,实现在activity的onPause时停止计数,onResume时开始接着计数class M...

2020-03-25 17:50:48 300

原创 Jetpack-- DataBinding结合ViewModel和LiveData使用
原力计划

简介DataBinding 用来将数据绑定在UI页面上,实现试图和数据的双向绑定,主要是体现数据驱动开发,具体含义是在得到数据后,通过框架在视图树中找到与数据绑定的视图使用在build.gradle中添加android {        ....    defaultConfig { &...

2020-03-25 13:58:38 567

原创 Jetpack -- ViewModel状态保存

简介一个Activity对应一个ViewModel,当Activity进入后台,屏幕翻转,语言切换等Activity会重建但是ViewModel还存活着,所以数据并不会丢失,当进程被系统杀死,Activity被回收,那么ViewModel中的数据就会丢失,这时候就需要ViewModelStore使用class MyViewModel(handle: SavedStateHan...

2020-03-25 13:57:01 310 2

原创 Jetpack -- LiveData使用与源码流程分析
原力计划

简介LiveData是给定生命周期的一个数据持有类LiveData配合ViewModel可以将Controller中的逻辑更加简单,在数据进行变动的时候可以通过注入观察者来监听数据的变化LiveData可以感知实现LifecycleOwner组件的生命周期,只有在上述组件的激活状态 (STARTED, RESUMED) 才会通知观察者数据更新当组件的生命周期到了DESTROYED状态的时...

2020-03-24 15:24:26 323

原创 Jetpack -- ViewModel使用与分析

简介使用Android AAC组件构建自己的应用之后,为了不让自己停留在仅仅是使用的层面,所以从头开始总结一边AAC组件的使用以及注意的要点ViewModel旨在以注重生命周期的方式存储和管理界面相关的数据, ViewModel 类让数据可在发生屏幕旋转等配置更改后继续存在作用:将View中的数据模块进行单独的管理,使得Activity和Fragment更加简单,只需要专注于界面本身...

2020-03-23 19:12:07 124

原创 Flutter--线程模型

Flutter线程模型isolate是通过Flutter Engine层面的一个线程来实现的,Flutter Engine线程的创建和管理是由embedder负责的,下面是Flutter Engine的运行架构Platform Task Runner它是Flutter Engine的主Task Runner,既可以处理与Engine的交互也可以处理来自native平台的交互,...

2020-03-21 22:25:54 367

原创 Flutter--网络请求(三)dio封装网络请求框架

dio简介dio库支持文件的上传和下载,Cookie管理、FormData、请求/取消、拦截器等,和Android中的OkHttp库相似基本用法import 'package:dio/dio.dart';_loadDataGet() async {  try {    Response response = await ...

2020-03-21 14:34:44 1057

原创 Flutter--网络请求(二)Json转换dart对象

JSON转换成Dart对象假设请求的返回的JSON数据如下{“id" : 12345, "title" : "titleName"}对应的dart对象class Article { final String title; // dynamic表示不知道传进去什么类型 Artilce.fromJson(Map<String, dynamic> j...

2020-03-21 13:25:52 905

原创 AweSome Flutter: 一起做一个项目 Wan Flutter !

WanAndroid-Flutter 项目????????????项目基于 Flutter 移动应用框架,采用 Dart 语言编写,继续打造新的WanAndroid项目地址WanAndroid(github) (留下个star再走叭)下载体验当前版本(1.0)项目展示项目功能首页首页文章列表首页banner搜索热词(包含在搜索界面)置顶文章广场我的分享分享文章...

2020-03-20 20:14:40 138

原创 Flutter--状态管理机制

简介Flutter的一些组件我们用了三天左右有了部分了解,在日后的工作学习中使用到了,我们可以再进行深入了解。平时我们呢使用的数据是动态的,所以我们在了解组件的同时,我们还需要对状态管理机制有一些了解Widget唯一标识在Flutter中,每个Widget都有一个唯一标识key,它在FrameWork层创建和渲染时生成,可以通过 GlobalKey、LocalKey、UniqueKey...

2020-03-11 17:24:42 587

原创 Flutter--网络请求(一)利用Dart原生http实现

Json字符串和Map类型转换import 'dart:convert'// Json转MapJson.decode(strData)// Map转JsonMap userInfo = {"username": "wjx", "age": 22};print(json.encode(userInfo));使用Dart原生http实现网络请求实例首先在pubspec.yaml中导...

2020-03-11 16:00:38 176

原创 Flutter--表单

TextField属性释义maxLines多行文本框onChanged监听文本框中的文字改变decorationhintText, border, labelText, labelStyleobscureText把文本框改为密码框controller结合TextEditingController()可以配置表单默认显示内容import ...

2020-03-11 00:02:15 88

原创 Flutter--按钮组件

属性属性释义onPressed按钮点击响应事件textColor按钮显示文本的颜色color按钮的颜色diabledColor按钮禁用时的颜色disabledTextColor按钮禁用时的文本颜色splashColor水波纹颜色highlightColor长按显示的颜色elevation阴影的范围,值越大阴影范围越大...

2020-03-10 19:18:28 107

原创 Flutter--DrawerLayout

Drawer 侧边栏drawer: Drawer( child: Text('左侧边栏'), ),endDrawer: Drawer( child: Text('右侧侧边栏'), ),DrawerHeaderdrawer: Drawer( child: Column( children: <Widget>[ ...

2020-03-10 11:41:43 67

AndroidKiller_v1.3.1.rar

AndroidKiller可视化、全自动的反编译、编译、签名;支持批量编译APK。

2019-06-07

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人 TA的粉丝

提示
确定要删除当前文章?
取消 删除