自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(16)
  • 收藏
  • 关注

原创 Android Jetpack组件 - ViewModel,LiveData使用以及原理

本文涉及的源码版本如下:com.android.support:appcompat-v7:27.1.1android.arch.lifecycle:extensions:1.1.1android.arch.lifecycle:viewmodel:1.1.1android.arch.lifecycle:livedata:1.1.1什么是ViewModel, 以及工作原理ViewMo...

2019-01-18 07:57:34 763

原创 Android Jetpack组件之Lifecycles库详解

Android Jetpack 组件是库的集合,这些库是为了协同工作而构建的,不过也可以单独采用,接下来会一一详细地学习这些库, 下面源码版本是com.android.support:appcompat-v7:28.0.0, 以及库android.arch.lifecycle:extensions:1.1.1Lifecycles库是拿来干什么的这个库从系统框架层去管理具有生命周期的组件,例如a...

2019-01-15 08:06:25 256

原创 再不用ContraintLayout就out啦

ContraintLayout 属性本文基于ContraintLayout 1.1版本, 参考ContraintLayout官方文档并结合实际的例子说明ContraintLayout 有以下作用:Relative positioning 相对位置Margin 边距Centering position 中间位置Visibility behavior 可见性行为Dimension co...

2019-01-10 23:09:56 221

原创 Android Jetpack组件之数据库Room详解(三)

本文涉及Library的版本如下:androidx.room:room-runtime:2.1.0-alpha03androidx.room:room-compiler:2.1.0-alpha03(注解编译器)Room对LiveData扩展下面先列一个room中使用livedata的例子:@Daopublic interface UserDao { @Query("SELE...

2019-04-16 12:04:52 446

原创 Android Jetpack组件之数据库Room详解(二)

本文涉及Library的版本如下:androidx.room:room-runtime:2.1.0-alpha03androidx.room:room-compiler:2.1.0-alpha03(注解编译器)回顾一下安卓的SQLiteOpenHelper相关类首先放一个关于安卓数据库的类图:SQLiteOpenHelper是一个抽象类,通常自己实现数据库,需要继承SQLiteOp...

2019-04-16 12:03:44 1034

原创 Android Jetpack组件之数据库Room详解(一)

本文涉及Library的版本如下:androidx.room:room-runtime:2.1.0-alpha03androidx.room:room-compiler:2.1.0-alpha03(注解编译器)androidx.room:room-rxjava2:2.1.0-alpha03Room的介绍Room为了SQLite提供了一个抽象层,对Android SQLite进行了封装...

2019-01-26 12:22:01 703 2

原创 Context真正的实现与Context的设计模式

说明:基于API 26的源码分析1. 类图Context: 是一个抽象类。ContextImpl: 是Context真正的实现类。ContextWrapper: 继承Context,是一个包装类,有一个mBase的成员变量,mBase是Context类型,Context抽象方法都是由mBase实现的。子类通过调用attachBaseContext方法替换mBase成员变量。Applic...

2019-01-11 09:59:26 1629

原创 理解Java浅克隆和深克隆

克隆概念Java一切皆对象,克隆就是对对象的克隆;克隆可能听起来有点高级,也可以为对象复制或者对象拷贝。 平时开发中,什么时候需要用到对象复制呢?当你有一个实体类,有很多属性,并且很多属性已经赋了值,这个时候需要对这个对象进行修改操作,但后面还会用到原来的值,这时就需要对象复制。浅克隆用代码举个栗子先:public static class C implements Cloneable{

2017-11-15 17:00:56 452

原创 从JDK里Stack源码的角度重温栈的实现

栈概念栈是元素的集合, 其中有两个原则操作: - push, 它添加到集合中 - pop 则移除最近添加的元素Push - 添加元素到栈里下面是push,pop相关的几个关键方法的源码public E push(E item) { addElement(item); return item;}public synchronized void addElement(E obj)

2017-11-13 16:46:20 200

原创 从jdk源码的角度重温链表

链表由一系列节点组成的有序集合。分为单向链表, 双向链表,循环链表单向链表: 每一个节点都有一个指针指向下一个节点,最后一个节点的指针指向null双向链表: 每一个节点都有两个指针(这里用p, n代表两个指针),p指向前一个节点,n指向下一个节点。但第一个节点的p指向null, 最后一个节点的n指向null循环链表: 每一个节点都有两个指针(这里用p, n代表两个指针), 第一个节点的p指

2017-11-08 09:44:35 222

原创 站在大神的肩膀上 - 简述Android应用启动流程

最近看了很多大神的博客,都是有关Android启动流程文章 ,看得很辛苦,似懂非懂的感觉。这篇文章是对Android启动流程的总结和自己的见解,没有复杂源码分析,只是简单总结阐述流程而已。系统进程启动流程手机开机时,先由init进程创建 Zygote进程, Zygote进程会启动虚拟机(ART:4.4以上; Dalvik虚拟机:4.4以下;两者的区别是:ART是运行本地机器码的, 比Dalvik

2017-11-03 11:17:01 419

原创 适配安卓沉浸式状态栏的新姿势

Github Demo: https://github.com/lliuguangbo/AutoSystemBar针对状态栏,官方从4.4版本开始支持,但是4.4和5.0以上API是不同的,6.0以上提供了两种状态栏图标样式 分别是白色和黑色样式。针对状态栏图标样式的修改,小米和魅族提供额外的API,在6.0以下都支持,可以参考它们的文档: - https://dev.mi.com/consol

2017-11-03 11:15:47 680

原创 关于ViewStub的所有 - 优化你的布局

ViewStub - Optimized Layout作用:用于优化布局,懒加载,运行时才会加载布局。使用场景:通常用于有些隐藏的或者特殊情况才会显示的布局。 例如:一个ListView,数据为空时,显示一个布局告诉用户在xml中是使用:<ViewStubandroid:id="@+id/stub"android:inflatedId="@+id/subTree"android:lay

2017-11-03 11:15:06 282

原创 CollapsingToolbarLayout源码分析

version: 26.1.0DemoCollapsingToolbarLayout构造器//检查当前的activity是否引用AppCompat的主题ThemeUtils.checkAppCompatTheme(context);//文字收缩的帮助类mCollapsingTextHelper = new CollapsingTextHelper(this);....// 保证调用inva

2017-11-03 11:13:47 818

原创 Android之VectorDrawable

之前官方VectorDrawable只支持api 21以上,前不久android support libriry 23.2.0出来了,VectorDrawable终于可以向下兼容了。相比之前图片来说,矢量图可以解决不同尺寸手机图片失真问题,可以不用多套图片去适配不同尺寸手机,还可以减少apk体积.官方的icon全都提供svg的版本:material design icon注意:矢量图形的初始加载可能

2016-03-13 17:38:56 771

原创 EditText切换输入法软件的enter按键,实现跳到下一个EditText或搜索等

首先,输入法软件的enter键其实是可以变的,可以变next,搜索等等 例如:实现一个登陆界面 代码如下: xmlns:android="http://schemas.android.com/apk/res/android"android:layout_width="match_parent"android:layout_height="match_pare

2015-03-22 00:37:38 665

空空如也

空空如也

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

TA关注的人

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