
普通
文章平均质量分 94
小凳子腿
悲守穷庐,将复何及!
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android自定义控件
自定义View步骤在values->attrs.xml中自定义控件的样式创建自定义View,在构造方法中获取自定义属性[ 重写onMesure ]重写onDraw说明:onDraw必须要重写,onMesure可以不重写实践第一步:自定义View的属性<declare-styleable name="CustomView"> <attr name="text_size" forma原创 2017-10-13 22:31:33 · 1345 阅读 · 0 评论 -
ThreadLocal 源码解析和使用
ThreadLocal定义ThreadLocal是Java语言提供用于支持线程局部变量的类。 ThreadLocal不是为了解决多线程访问共享变量,而是通过为每个线程提供一个独立的变量副本来解决变量并发访问的冲突问题。ThreadLocal常用的4个方法在JDK5.0中,ThreadLocal已经支持泛型,该类的类名已经变为ThreadLocalpublic void set(T value)设置原创 2017-10-17 14:44:11 · 1419 阅读 · 0 评论 -
Java中try、catch、finally、return的执行顺序
示例try、finally中都有return的执行顺序public class TestReturn { private static int i = 1; public static void main(String[] args) { int i = testRetrun(); System.out.println("Final-i...原创 2017-10-25 22:22:32 · 1215 阅读 · 0 评论 -
git删除远端仓库文件方法及常用指令
git rm XX 删除XX文件 在本地仓库删除文件夹git rm –r xx 删除文件夹 –r 表示递归所有子目录git commit –m “修改信息” 提交信息git push origin xxxxxx 推送到远程仓库 xxxxxx代表分支名字原创 2017-10-25 22:25:01 · 5651 阅读 · 0 评论 -
Android手势密码的实现
演示 ##Demo下载使用可以下载示例代码,以全面了解使用方法,分步使用如下第一步 下载GestureLock手势登录代码,依赖patternlockview Module。 将PatternLockView放到Xml布局中<com.android.patternlockview.PatternLockView android:id="@+id/pattern_lock_view原创 2017-11-01 23:30:51 · 2250 阅读 · 0 评论 -
Android手势密码原理分析
在上一篇介绍了手势密码的使用,这一篇将主要介绍手势密码的原理,手势密码的功能主要是由自定义PatternLockView实现的。那咱这就一步一步来揭开PatternLockView的面纱。效果图步骤第一步自定义PatternLockView继承View,重写两个构造方法,一个在xml中定义会调用,一个在java代码中创建对象会调用。但不管怎么定义,都会走到这个构造中。public PatternLo原创 2017-11-02 17:10:09 · 2895 阅读 · 0 评论 -
invalidate和requestLayout、postinvalidate方法使用说明
invalidate:当View的显示内容发生改变,比如状态(enable,focus),背景,显隐发生改变等,且新显示内容不影响View的大小、位置,则只需调用invalidate方法。调用invalidate方法只会执行onDraw方法。需要在UI线程调用postinvalidate:作用和invalidate一样,可以在子线程调用requestLayout:当View的宽高已经不再适合现在的区域时,原创 2017-11-02 23:21:05 · 1735 阅读 · 0 评论 -
RxJava线程切换源码分析
RxJava特点异步RxJava内四个基本概念 - Observable 可观察者,即被观察者 - Observer 观察者 - subscribe 订阅 - 事件Observable 和 Observer 通过 subscribe() 方法实现订阅关系,从而 Observable可以在需要的时候发出事件来通知 Observer。 除了 Observer 接口之外,RxJava 还内置了原创 2017-11-03 23:43:22 · 1531 阅读 · 0 评论 -
RxJava源码深度解析-就这一篇就够了
RxJava内四个基本概念Observable 可观察者,即被观察者Observer 观察者subscribe 订阅事件RxJava源码深度解析示例代码Observable.just("nihao") .filter(new Func1<String, Boolean>() { @Override原创 2017-11-04 23:12:45 · 1801 阅读 · 0 评论 -
ViewPager一屏显示多个页面
使用ViewPager一般我们只需要一屏只显示一个页面,例如引导页、轮播图等。但它如何能一屏显示多个页面呢?其实很简单就是在控件的父布局或根布局添加clipChildren=false属性即可。android:clipChildren属性:是否限制子控件在其范围内显示,也就是说当子控件超出父控件规定大小时,超出部分是否显示,clipChildren默认值为true。 也就是不允许超出绘制效果图示例代原创 2017-10-10 23:00:40 · 9182 阅读 · 0 评论 -
Android在线源码查看网站
http://androidxref.com 这个提供的同步官方源码简单使用 上图左侧选择使用的Android源码版本进入指定源码开始搜索: 上图右侧选中Framework,意在只搜索Android源码Full Search: 进行全文搜索,会匹配所有的单词、字符串、标识符以及数字等,如搜素Activity中ManagedCursor类Definition、Symbol:适合搜素类中的成员变量原创 2017-10-12 22:37:59 · 1826 阅读 · 0 评论 -
Activity的四种启动模式及使用场景
standard、singleTop、singleTask、singleInstance默认Activity为standard标准模式,多次启动同一个Activity时,系统会创建多个实例,在这种模式下,谁启动了该模式的Activity,该Activity就属于启动它的Activity的任务栈中StandardActivity SingleTopActivity SingleTaskActivity这三种启动模原创 2017-10-16 22:47:25 · 3514 阅读 · 1 评论 -
IntentService使用及源码解析
Service:是Android的四大组件之一,不是进程也不是线程,是运行在Android主线程的组件,不能执行耗时的操作,需要手动结束自己IntentService:是一个功能强大的线程、内部维护着一个消息队列,可处理一些耗时的操作,任务全部处理完后可自动关闭服务。默认实现的onBind()返回null。原创 2017-09-28 19:05:57 · 1249 阅读 · 0 评论 -
Andorid:Handler多种使用方式
Hanlder的作用 相信做Andorid开发的工程师对Handler的使用都不陌生,那为什么还会有这篇文章呢,只是为了加强自己的记忆,好了言归正传,话说为什么Android要引入Handler呢?我想最本质的目的是为了实现跨线程通信的,那为什么要设计成只能通过Handler机制来更新UI呢?我想最本质的目的就是解决多线程并发的问题。就比如如果没有这套机制,有多个线程去同时更新UI,会出现什么问题原创 2017-09-29 20:48:04 · 1594 阅读 · 0 评论 -
Service中stopSelf(int startId)说明
欢迎使用Markdown编辑器写博客本Markdown编辑器使用StackEdit修改而来,用它写博客,将会带来全新的体验哦:Markdown和扩展Markdown简洁的语法代码块高亮图片链接和图片上传LaTex数学公式UML序列图和流程图离线写博客导入导出Markdown文件丰富的快捷键快捷键加粗 Ctrl + B 斜体 Ctrl + I 引用 Ctrl原创 2017-09-30 22:15:00 · 2873 阅读 · 0 评论 -
Hanlder、Looper、MessageQueue源码解析
Handler介绍Handler是Android提供给我们用来更新UI的一套机制,也是一套消息处理机制。在Android的源码中有很多地方可以看到它的身影,最熟悉就是Activiy生命周期的回调方法,就是通过这套机制实现的。Handler的出现就是为了保证UI线程的安全,因为Android不允许在非UI线程中更新UI组件,所以所有通过非UI线程得到的数据,都需要通过这套机制来进行数据更新。当然了一个原创 2017-10-03 21:51:34 · 1479 阅读 · 0 评论 -
ThreadPoolExecutor使用及Android中常见的4种线程池
线程池功能介绍通俗的讲就是存放和管理线程的一个池子,那这个池子出现有什么好处呢?在讲之前我们先来了解一些定义:进程:是系统进行资源分配和调度的一个独立单位,它包括独立的地址空间、系统资源和1-n个线程,进程间切换开销大并且不能共享资源,进程间互不影响 线程:是CPU调度和分派的基本单位,必须依附于进程而存在,线程间切换开销小但共享所在进程的全部资源,一个线程挂掉会导致所在进程挂掉 并发:是多个任原创 2017-10-03 23:06:34 · 2202 阅读 · 0 评论 -
Andorid:Service启动的两种方式及区别
Service介绍Service是Android的四大组件之一,和Activity最大的区别是没有界面,是一个跑在后台的服务。 Service的两种启动方式: startService启动,生命周期: onCreate()——>onStartCommand()——>onDestroy() bindService启动,生命周期: onCreate()——>onBind...原创 2017-10-04 21:59:07 · 2178 阅读 · 0 评论 -
getDimension、getDimensionPixelOffset、getDimensionPixelSize 源码解析之三者区别
getDimension、getDimensionPixelOffset、getDimensionPixelSize 源码解析之三者区别getDimension 返回float值,getDimensionPixelOffset 将float强转为int值返回,getDimensionPixelSize 将float值四舍五入成int值返回原创 2017-10-05 00:09:37 · 1744 阅读 · 0 评论 -
View.post在Android 7.0 api24(以上)已不再100%执行
在Android 7.0 api24,Android 8.0 api25的手机上如果通过new创建的View,如果没有将它通过addView()加入到ViewGroup布局中,那通过View.post()发送出去的任务将不再执行,也就无法通过Viwe.post更新UI。原创 2017-10-08 00:21:42 · 2848 阅读 · 1 评论 -
Android异步更新UI的四种方法及源码简析
异步更新UI的四种方法handler.sendMessage(Message)handler.post(Runnable)activity。runOnUiThread(Runnable)view.post(Runnable)源码简析第一种:Handler.sendMessage() (推荐) 在主线程定义private Handler mHandler = new Handler()原创 2017-10-08 00:22:34 · 1463 阅读 · 0 评论 -
Android自定义控件(一) 自定义组合控件
自定义组合控件相对于自定义控件简单很多,也是我们在实际开发中经常使用的。比如下面这张图,就可以用组合控件来实现。自定义组合控件的步骤在values->attrs.xml中自定义控件的属性创建自定义View类并继承已有的控件(如:RelativeLayout、LinearLayout等)在布局文件layout中添加自定义控件在自定义View的构造方法中获取我们自定义的属性实践第一步:在val原创 2017-10-11 22:42:52 · 2453 阅读 · 0 评论 -
HandlerThread使用和源码解析
HandlerThread是什么HandlerThread其本质就是一个Thread,只不过其内部帮我们封装了Looper,在线程内部,代码是串行处理。如果你愿意,完全可自己写HandlerThread的主要作用就是在新线程中执行一些耗时的操作,因其使用了Looper,MessageQueue,所以只能顺序的执行任务,高并发的执行任务还需使用线程池。然并卵,个人感觉HanlderThread完全可以原创 2017-09-28 19:01:25 · 1468 阅读 · 0 评论