自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

依生依世

一只纠结的程序猿

  • 博客(40)
  • 资源 (1)
  • 收藏
  • 关注

原创 Android launchMode的特殊行为

Android launchMode的特殊行为1.被其他app调起时,launcheMode的行为2.点击Home键,再点击app图标,回到app的行为1.被其他app调起时,launcheMode的行为被调起的app如果没有初始化,那么Application一定会被初始化,且一定为新的进程如果launceMode是standard或者singleTop的,那么Activity是在当...

2019-07-31 19:42:45 183

原创 Android View位置跳动问题

Android View位置跳动问题有时我们会遇到当页面刷新后,类似NestedScrollView和RecyclerView这种可滑动View的滚动位置会变化一下,和原先不一致通过调试我们发现,是因为页面里有RecyclerView这种可以获取焦点的View,跟踪代码得知,当这种View的一些flag属性变化时:如Visibility、focusable、enable等,会尝试去re...

2019-07-31 19:34:46 807

原创 Android View 获取焦点

Android View 获取焦点有时我们需要某些View获取焦点,比如EditText获取焦点弹出键盘,我们有以下几种方式可以做到1.在页面初始化的时候调用view.requestFocus()override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) ...

2019-07-31 19:26:52 3302

原创 Android AppBarLayout吸顶位置错误问题

Android AppBarLayout吸顶位置错误问题我们通常会用AppBarLayout来做一些复杂滚动和吸顶的效果,比如如下代码:<?xml version="1.0" encoding="utf-8"?><android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.and...

2019-07-31 19:22:01 1950

原创 Android 添加系统级窗口

Android 添加系统级窗口1.通过WindowManager可以添加一个系统层的window,覆盖在整个屏幕的最上层,可以用来实现悬浮窗、覆盖层等功能,但是不同android系统行为不一致系统版本type权限<23(6.0)TYPE_SYSTEM_ALERT不需要23~25(7.1)TYPE_SYSTEM_ALERTSYSTEM_ALERT_WIN...

2019-07-31 18:22:00 1168

原创 Android View clipChildren属性

Android View clipChildren属性ViewGroup的clipChildren属性,决定其children是否要绘制超过其区域的部分默认为true:意为裁剪children,如果children边界超出parent,则会被裁减掉不显示,和正常一样设置为false:如果设置该属性的ViewGroup-A,其有一个ViewGroup的child-B,那么B的chil...

2019-07-31 18:10:52 456

原创 Android View clipToPadding属性

Android View clipToPadding属性view的clipPadding属性,决定绘制时,是否将其content(自身内容、children),绘制到其padding位置默认为true:意为裁剪padding,绘制时padding区域的content将会被裁剪掉,也就是会正常显示padding设置为false:如果content达到padding区域,会覆盖pad...

2019-07-31 17:55:06 617

原创 Android WebView加载本地url

Android WebView加载本地url通常我们使用WebView的loadUrl()方法加载一个远程html,也可以加载一个本地html文件,通常我们把本地html会放在assets目录下。加载assets文件夹下的文件:webview.loadUrl(" file:///android_asset/index.html ");如果Html中有script,我们需要开启js功能,否...

2019-07-31 17:19:56 3585

原创 Android H5调用WebView选文件

Android H5调用WebView选文件H5页面可以通过< input type=‘file’ accept=‘image/*’/>来调用WebView的方法,进行图片选择,这里调用的方法在WebChromeClient中,不同版本系统需要做兼容系统版本override methodnote<21(5.0)openFileChooser(Value...

2019-07-31 17:15:44 1880

原创 Android 调用系统应用选文件

Android 调用系统应用选文件我们通常会通过Intent调起系统应用进行选择文件,包括图片、视频、音频等,但是需要考虑不同系统版本的兼容性问题系统版本actionaccept_type(选择文件类型)<19(4.4)Intent.ACTION_GET_CONTENT通过intent.setType,设置一个字符串表示MIMEType:“image/*, vi...

2019-07-31 17:04:30 3537

原创 Android 动画 原理解析

Android 动画 原理解析一.View动画(一)基本使用1.代码实现2.xml实现(二)原理解析1.实现原理2.源码分析(1)Animation类(2)流程分析二.布局动画(一)基本使用1.xml实现2.代码实现(二)原理解析1.实现原理2.源码分析(1)解析设置LayoutAnimationController(2)dispatchDraw()三.属性动画(一)基本使用1.代码实现2.xml...

2019-07-31 16:35:00 787

原创 Android 动态权限机制详解

Android 动态权限机制详解一.权限系统(一)6.0之前(二)6.0之后(三)8.0二.兼容适配(一)TargetSdkVersion(二)适配方法1.检查权限2.请求权限3.请求权限的结果4.适当的提示5.Fragment的权限请求6.流程图总结一.权限系统(一)6.0之前Android为一些操作提供了必要的权限,比如我们的app想访问网络,就需要有网络权限android.permis...

2019-07-31 15:47:45 2459

原创 Android 编码解码的原理解析

Android 编码解码的原理解析一.字符集1.字符集的由来2.字符集的演变(1)ISO-8859-1字符集(2)GB2312/GBK字符集(3)Unicode字符集(4)UTF-8编码方式二.编码解码1.编码和解码2.Java中的编码解码3.URL的解码编码三.android中的编码解码一.字符集1.字符集的由来计算机识别、处理、传递、存储数据,都是基于一个个的字节,一个字节有8为,每...

2019-07-31 15:33:49 1783

原创 Android 屏幕旋转使用

Android 屏幕旋转使用一·Manifest配置1.configChanges2.screenOrientation3.总结二.回调方法一·Manifest配置如需实现转屏效果,我们需要在manifest文件中对Activity进行一些属性配置<activity android:name=".TestActivity" android:configChang...

2019-07-31 14:44:21 311

原创 Android 输入法键盘使用

Android 输入法键盘使用一.设置页面输入法展示方式1.adjustXxx2.stateXxx3.代码调用二.动态调用键盘1.调起键盘2.隐藏键盘一.设置页面输入法展示方式我们经常会在项目中遇到输入法展示的情况,有时希望进入页面时自动展示输入法,有时希望页面不展示输入法直到用户主动点击EditText之类的,还有输入法和相关View出现的位置等等,都是通过manifest里对activit...

2019-07-31 14:36:54 1198

原创 Android Binder 原理解析

Android Binder 原理解析一.跨进程通信1.进程隔离2.用户空间/内核空间3.系统调用/内核态/用户态4.内核模块/驱动二.为何使用Binder三.Binder通信原理四.Binder实现1.IBinder/IInterface2.Binder/BinderProxy(1)Binder(2)BinderProxy3.AIDL/Stub/Proxy(1)AIDL(2)Stubi.atta...

2019-07-31 11:45:52 1083 13

原创 Android ButterKnife 使用及原理解析

Android ButterKnife 使用及原理解析一.引入依赖二.简单使用1.绑定view、views、resources2.view事件绑定3.设置view或一组view的操作4.执行ButterKnife的绑定三.实现原理1.实现原理2.工作流程3.bind流程及实例四.其他说明ButterKnife是编译器型的注解工具,还有一种依赖注入型的注解工具RoboGuice,可以参考这篇文章。...

2019-07-31 11:19:07 484

原创 Android Glide 原理解析

Android Glide 原理解析一.提供的功能特性二.简单使用三.源码结构1.内存缓存(1)MemoryCache(2)BitmapPool(3)二级内存缓存2.磁盘缓存3.图片对应的Key4.Glide对象5.RequestManager—绑定生命周期6.GenericRequestBuilder对象7.Target对象8.RequestTracker对象9.Engine、EngineJob...

2019-07-31 10:50:33 6931

原创 Android GreenDao 使用

Android GreenDao 使用一.创建二.增加三.删除四.更新五.查找一.创建(1)创建一个java工程(可以当成项目的一个module),在main函数里创建Schema,向其添加多个Entity(相当于表),调用DaoGenerator的generateAll方法生成整个数据库public static void main(String[] args) throws IOExce...

2019-07-30 20:02:32 864

原创 Android ListView 原理解析

Android ListView 原理解析一.模块分析1.列表控件2.Adapter适配器3.RecycleBin回收机制二.View布局流程分析1.ListView的layoutChildren()方法2.fillFromTop()方法-→fillDown()方法ViewGroup顶部到底部设置view3.makeAndAddView()4.obtainView()5.setupChild()三...

2019-07-30 19:54:28 865

原创 Android NestedScrolling 嵌套滚动原理解析

Android NestedScrolling 嵌套滚动原理解析一.原有问题二.解决方案1.实现原理2.方案设计(1)android的support-v4包提供了两个接口来实现NestedScroll框架(2)android的support-v4包也提供了两个相应的Helper类来实现通用功能(3)兼容性(4)流程三.源码分析NestedScrollView/ScrollView四.NestedS...

2019-07-30 18:48:04 1367

原创 Android Picasso 原理解析

Android Picasso 原理解析一.提供的功能特性二.简单使用三.源码结构1.整体类图2.内存缓存3.磁盘缓存4.Picasso对象5.RequestCreator对象6.Action对象7.Dispatcher对象8.RequestHandler对象9.BitmapHunter对象10.图片对应的Key(1)内存缓存(2)磁盘缓存四.流程分析一.提供的功能特性使用默认的内存缓存和...

2019-07-30 18:03:10 959

原创 Android RecyclerView 原理解析

Android RecyclerView 原理解析一.模块分析1.列表控件2.LayoutManager3.Recycler回收机制二.View布局流程分析1.LinearLayoutManager的onLayoutChildren()方法2.fill()方法3.recycleByLayoutState()4.layoutChunk()三.滚动时view的展示与复用1.拖动滚动2.Fling滚动3...

2019-07-30 17:49:08 3668

原创 Android Retrofit 原理解析

Android Retrofit 原理解析一.基本使用二.源码分析1.Retrofit.Builder构建参数2.可配置项(1)CallFactory(2)ConverterFactory(3)CallAdapterFactory(4)CallbackExecutor3.Retrofit.create动态代理生成请求对象4.ServiceMethod(1)创建(2)解析方法注解(3)解析参数注解(...

2019-07-30 16:23:32 3205

原创 Android RoboGuice使用

Android RoboGuice使用一.注入顺序及使用地方:二.布局,控件:三.资源(anim,string,drawable,etc):四.系统服务:五.普通java类:六.单例模式:七.Service和broadcastReceiver:八.Logging(和Log差不多):九.自定义view:十.Event Listener:一.注入顺序及使用地方:Robo(Fragment)Ac...

2019-07-30 16:05:56 259

原创 Android Support包版本变更记录

Android Support包版本变更记录版本新增特性行为修改过期APIbug修复适配点24.0.0Fragment增加commitNow方法支持同步添加到FragmentActivity中如将原有commit方式改为commitNow方法添加Fragment,需要进行全回归测试其行为24.0.1Fragment.setUserVisibleHi...

2019-07-30 11:47:26 433

原创 Android ViewDragHelper使用及原理

Android ViewDragHelper使用及原理1.初始化2.拦截事件处理3.拖动事件处理(1)拖动(2)释放(3)滚动ViewDragHelper类,是用来处理View边界拖动相关的类,比如我们这里要用的例子—侧滑拖动关闭页面(类似微信),该功能很明显是要处理在View上的触摸事件,记录触摸点、计算距离、滚动动画、状态回调等,如果我们自己手动实现自然会很麻烦还可能出错,而这个类会帮助我们...

2019-07-30 10:57:11 772

原创 Android View 触摸机制

Android View 触摸机制一.接收触摸事件开始派发二.根view派发触摸事件三.ViewGroup派发触摸事件四.View派发触摸事件五.onTouchEvent()六.多点触摸1.基本概念2.PointerId、PointerIndex概念及多点触摸相关方法3.多点触摸相关实现(1)维护targets列表(2)根据需要的pointerId拆分MotionEvent进行派发(3)如何进行拆...

2019-07-29 19:54:26 645

原创 Android View 绘制流程之四:绘制流程触发机制

Android View 绘制流程之四:绘制流程触发机制一.View状态的改变(包括Background的drawable状态改变)1.setEnable()2.setPressed()3.setSelected()4.refreshDrawableState()二.View焦点的改变1.findFoucs()2.getFocusedChild()3.hasFocus()/hasFocusable...

2019-07-29 19:28:36 1977

原创 Android View 绘制流程之三:draw绘制

Android View 绘制流程之三:draw绘制一.draw方法的整体流程二.drawBackground实现三.onDraw四.dispatchDraw的实现五.ScrollBar的绘制draw()方法是View系统测绘流程的最后一步,就是绘制,当view测量完大小、确定完位置后,就需要在其位置处绘制出其内容等视觉上的东西;View的draw方法有固定的流程,一般ViewGroup需要在d...

2019-07-29 19:13:30 3583 1

原创 Android View 绘制流程之二:layout布局

Android View 绘制流程之二:layout布局一.layout整体流程二.常见onLayout实现1.FrameLayout的onLayout2.LinearLayout的onLayout3.RelativeLayout的onLayoutlayout(int left,int top,int right,int bottom)方法是View测绘系统的第二步,布局过程,是在measure...

2019-07-29 18:11:20 605

原创 Android View 绘制流程之一:measure测量

Android View 绘制流程之一:measure测量一.MeasureSpec测量规格二.LayoutParams布局参数1.ViewaddViewLinearLayout的generateDefaultLayoutParams2.xml三.Measure整体流程四.常见onMeasure实现1.测量子View方法(1)measureChildren()(2)measureChild()(3...

2019-07-29 18:02:37 1320 3

原创 Kotlin 协程之三:Android中的应用

Kotlin 协程之二:Android中的应用1.将线程改为协程2.将网络请求改为协程3.生命周期系列文章:至此,我们完全了解了协程的使用和实现原理,那么如何应用到我们Android项目中呢?这里讲一些简单的例子。1.将线程改为协程通常我们有一些小的延时任务或异步任务,会使用线程池来解决,这里我们可以用协程来解决,比如:在页面创建后,异步读取数据库中的内容,然后展示到TextView上。...

2019-07-29 15:55:34 925 1

原创 Kotlin 协程之二:原理剖析

Kotlin 协程之二:原理剖析一.协程的工作原理1.协程作用域(运行环境)-CoroutineScope2.协程任务执行环境-Dispatcher(1)Dispatcher.Main(2)Dispatcher.IO线程池-CoroutineScheduleri.尽量使用当前线程ii.双重队列iii.抢占其他线程的任务3.协程任务-Coroutine(1)AbstractCoroutine(2)B...

2019-07-29 15:52:46 3703 2

原创 Kotlin 协程之一:基础使用

@[TOC](Kotlin 协程(一):基础使用)阅读完后,可以深入理解其实现原理。一.什么是协程kotlin在1.3版本后,提供了协程coroutine库,协程提供了一种,简化异步任务处理的方案。二.为什么用协程1.简化代码,增加可读性使用协程可以用简洁直观可读性高的写法,实现多重依赖关系的异步任务的书写。先来回想一下我们平时的异步任务怎么实现呢?(1).通过Callback回调...

2019-07-29 15:24:54 2044

原创 Kotlin 泛型

Kotlin 泛型一.概念二.Java协变三.Kotlin协变(一)声明处协变(二)使用处协变一.概念java里的泛型想必大家都很了解了,是java系统提供的一个特性,便于我们在设计代码时,可以将一部分内容设置为可变的,比如最常见的class List集合类,T可以为任意类型,比如我们想要String的集合就是List,想要Object的集合就用List,这样一来,通过一个类的书写就可以产生"...

2019-07-29 14:47:48 205

原创 Android 签名/认证机制

Android 签名/认证机制一.V1签名(一)签名方式1.MANIFEST.MF2.CERT.SF3.CERT.RSA4.总结(二)安装时校验1.认证CERT.RSA2.认证CERT.SF3.认证MANIFEST.MF4.认证开发者身份(三)总结二.V2签名(一)签名方式1.签名方式2.签名数据(二)安装时校验1.V2校验入口2.获取签名数据(1)验证签名信息(2)验证摘要3.向后兼容(三)总结...

2019-07-29 14:31:52 2010 1

原创 对称和非对称加密

对称和非对称加密一.对称加密二.非对称加密1.数据加密2.签名认证3.公钥安全性三.应用一.对称加密对称加密方法是指发送方和接收方在通信前,先协定一把同样的私钥,然后用同一把私钥进行数据的加密和解密。常用的对称加密算法有DES、RC、AES等。对称加密的优点:算法公开、计算量小、加密更快,通常用于加密大量数据。对称加密的缺点:每个通信双方需要一把密钥,n个通信方就需要n*(n-1)把...

2019-07-29 11:29:13 1021

原创 HTTPS原理

HTTPS原理一.背景二.原理三.设计四.特点一.背景HTTP协议以明文方式发送内容,不提供任何方式的数据加密,如果攻击者截取了传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,比如信用卡号、密码等。为了解决数据传输的安全问题,诞生了SSL(安全套接字层)/TLS协议,依靠数字证书来验证服务器客户端的身份并未数据通信进行加密,位于TCP/IP协议与各个应用层协议之间...

2019-07-29 11:12:34 226

原创 ADB学习笔记

ADB-Shell笔记基本概念ADB服务相关命令adb kill-serveradb start-serveradb shellexit设备相关adb devicesadb -s serialNumber cmdadb get-stateadb get-serialno文件相关adb install (-s) xxx.apkadb install -r xxx.apkadb uninstall (...

2019-07-26 18:01:59 968

安卓笔记文档

安卓的一些常用控件代码的笔记,不是很全,但应该有用

2014-05-27

空空如也

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

TA关注的人

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