
Android
文章平均质量分 71
_houzhi
这个作者很懒,什么都没留下…
展开
-
Android MessageQueue源码分析
MessageQueue是Android消息机制的核心,熟悉MessageQueue能够帮助我们更清楚详细地理解Android的消息机制。这篇文章会介绍MessageQueue消息的插入(enqueueMessage)和读取(next),native层的消息机制,以及IdleHandler和SyncBarrier的逻辑原理。源码是基于6.0。原创 2016-10-17 00:27:53 · 3718 阅读 · 2 评论 -
关于Android MVP模式的思考
最近经常看到各种介绍MVP模式的博客的,以前写的项目基本都是不断重构项目,直接考虑模块化,重用,精简,将项目代码变得更加精简,提高代码之间的复用性。看了MVP模式后,感觉有很多地方可以优化的,决定去总结一下自己代码中的问题并优化,算是对自己之前写的代码的回顾。好的模式能够让人在阅读的时候能够很好地理解代码,在对程序进行修改的时候能够快速简洁,并且不对原有代码结构破坏。原创 2016-05-05 11:18:23 · 2660 阅读 · 0 评论 -
TextView drawableLeft ,android:duplicateParentState ,Activity四种launch类型
有时候需要在TextView的文本后面加个图片啥的,可以考虑用设置TextView 的 android:drawableLeft属性。类似的有drawableLeft,drawableRight,drawableTop,drawableBottom 。android:duplicateParentState 参考网上的说法是获取父控件的绘图状态,如光标,按下等。作为自己的状态。但是原创 2013-05-23 23:50:45 · 1486 阅读 · 0 评论 -
Android源码桥梁模式---FragmentCompat
FragmentCompat是一个用于访问Fragment特征的帮助类,它在support v13开始以一种向后兼容的风格提出。它是如何向后兼容的呢?就是使用桥梁模式来向后兼容。它是一种简化了的桥梁模式,下面将简单介绍FragmentCompat与桥梁模式。原创 2016-04-26 19:45:31 · 4172 阅读 · 0 评论 -
子View按规则自动移动Layout
项目地址:https://github.com/xxxzhi/ChildAutoMovi-Layout之前看到一个屏幕上有点不断闪动的,并且移动的界面。当时久萌生一种想法,能不能做一个这样的选择界面呢?实现起来其实比较简单,写了一下之后,感觉完全可以做一个可以很好地重用,并且方便扩展移动规则的View。趁着平时时间,就干脆实现了它,并且粗略写了几种移动规则。ChildAutoMoviLayout实现原创 2015-06-21 12:22:32 · 1288 阅读 · 0 评论 -
Android PagerAdapter notifyDatasetChanged
forget to call notifyDatasetChanged 错误这几天一直在完善之前自己的写的Android应用。想用ViewPager让之前界面能够滑动阅读。但是滑动过程中,经常会莫名其妙地遇到一个问题。莫名其妙地提示ViewPager expected 10 counts,but found 20. forget to call notifyDatasetChanged. 意思很明原创 2015-04-28 22:02:02 · 1435 阅读 · 0 评论 -
Andrid item中有focus子View
好久没有写过什么东西了。今天在调整一个Android应用的时候,让一个问题给卡了一下。出现这个问题给了我一个很大的警钟。在Android中,如果使用ListView一类的View,里面会有Item,而Item中又会有像CheckBox,Button这种控件。如果再使用ListView的setOnItemClickListener,就会遇到一个问题。setOnItemClickListener的设置无原创 2015-04-21 21:42:42 · 1341 阅读 · 0 评论 -
目前还可以使用的android 源码下载
curl http://git-repo.googlecode.com/files/repo-1.12 > ~/bin/repo原创 2014-11-20 16:38:33 · 887 阅读 · 0 评论 -
Android Surface 系统简单学习
整个Android的Surface系统,相当于是接通了Activity,跟硬件屏幕。Surface系统会跟Activity关联,ViewRoot中有一个成员变量mSurface。可以这么说,Surface系统提供了Android界面部分,我们看到的东西都是由Surface系统提供的。Activity的View在应用开发的时候,我们需要设置Activity的View,就是Activi原创 2014-09-20 11:08:19 · 1724 阅读 · 0 评论 -
android xml 三种解析
Introducexml 是目前使用范围最广的数据传输类型。这几天在弄的一个项目,就是用xml来进行数据传输的,所以特地把所有的xml 解析方式进行学习总结一下。DOM 方式解析Dom方式解析是将整个xml文档一次性全部读取出来,进行解析。可以想象在读入的时候,就已经将整个文档解析好了,之后可以任意地去读取出来了。优点这种方式很显然,读取出来方便,写入也方便原创 2014-03-02 00:44:24 · 1159 阅读 · 0 评论 -
单元测试之道——基于junit的java单元测试 的读书笔记与思考
第二章 你的首个单元测试这一张已经忘了差不多,如何去测试,其实首先还是得先去考虑怎么去测试,这个就需要看代码单元的需求了。 一个简单的例子。测试排序第二章 你的首个单元测试这一张已经忘了差不多,如何去测试,其实首先还是得先去考虑怎么去测试,这个就需要看代码单元的需求了。 一个简单的例子。测试排序assert 9 = Largest.getLargest(1原创 2014-02-26 00:25:04 · 1063 阅读 · 0 评论 -
关于ViewPager 只显示一半的问题
最近用viewpager弄了一个图片显示的。但是遇到了一个问题,里面的内容只显示了一部分。。。如下图所示:xml布局如下: <android.support.v4.view.ViewPager android:id="@+id/main_pager1" android:layout_width="match_parent原创 2013-08-17 13:06:10 · 3780 阅读 · 0 评论 -
android shape
最近在整一个android项目,因为p图技术不高。干脆很多地方直接用代码写出那种渐变,形状之类的效果。android 可以用shape 作为背景,写出android 各种效果。在android drawable 文件夹中新建一个.xml 文件,选择shape 作为 根元素。shape 包括的属性有:android:type 形状四种:rectangle,oval,linear,ring原创 2013-11-20 17:16:21 · 1491 阅读 · 0 评论 -
Android源码装饰模式---ContextWrapper
如果说Android源码中哪个地方装饰模式应用的最明显的话,那肯定是非ContextWrapper莫属了,ContextWrapper是一个透明的经典的装饰模式。本文将通过装饰器模式分析Context源码结构。本文基于的Android源码是(android 5.0.0)。首先先介绍一下装饰模式。装饰模式意图装饰模式动态地给对象添加额外的职责,就添加功能来说,它比子类的方式更加灵活。原创 2016-04-14 16:39:51 · 14657 阅读 · 2 评论 -
Android4.0 Bitmap Parcel传输源码分析
很久之前就看到有网友遇到用Parcel传Bitmap的时候,会遇到因为图片太大而报错,都在讨论传输Bitmap的时候的大小限制,但是实际上应该只有在4.0之前会有限制,4.0之后图片传输采用了Blob来传输,最终会使用ashmem来传递占用内存大的数据。下面分别介绍4.0前后Parcel对图片传输的异同。原创 2016-05-29 11:32:06 · 2908 阅读 · 0 评论 -
Retrofit源码解析
RetrofitRetrofit是Github上面squre组织开发的一个类型安全的Http客户端,它可以在Java和Android上面使用。Retrofit将描述请求的接口转换为对象,然后再由该对象去请求后台。Retrofit将请求对象化了。目前已经发布了2.0beta版本。原创 2016-03-03 18:12:26 · 1038 阅读 · 2 评论 -
Hugo源码分析
Hugo是JakeWharton大神开发的一个通过注解触发的Debug日志库。它是一个非常好的AOP框架,在Debug模式下,Hugo利用aspectj库来进行切面编程,插入日志代码。通过分析Hugo的代码能够对gradle以及aspectj有一个非常好的了解。原创 2016-11-05 22:41:54 · 4566 阅读 · 0 评论 -
AppWidget源码分析(1)---接口类
最近项目中接触到AppWidget,相对来说这部分比较简单,所以趁着空余时间详细阅读了AppWidget的源码。这篇文章主要是从源码上分析AppWidget中API类的相关原理,相关类的简单功能介绍和实现原理。关于使用,建议看指导文档。原创 2016-08-09 23:15:35 · 2495 阅读 · 0 评论 -
关于Android事件派发流程的理解
以前看了很多人介绍的Android事件派发流程,但最近使用那些来写代码的时候出现了不少错误。所以回顾一下整个流程,简单介绍从手触摸屏幕开始到事件在View树派发,从源码上分析ViewGroup.dispatchTouchEvent。原创 2016-05-12 20:04:15 · 6344 阅读 · 1 评论 -
Android Bitmap深入介绍(一)---基础
在Android应用开发中,我们经常需要跟图片打交道,而图片一个很麻烦的问题是占用内存非常大,经常导致OOM,了解Bitmap相关信息,不同sdk版本中Android图片处理的变化,以及一些优化处理的方式对我们平时开发中对图片的会非常有帮助。这篇先介绍Bitmap基础内容,关于像素,存储信息,以及加载。原创 2016-06-08 00:31:17 · 27292 阅读 · 1 评论 -
为什么Activity生命周期函数是运行在UI线程
这是我自己给自己提的问题,或者说是Activity的生命周期函数是怎样运行在主线程的?下面简单分析一下,讨论的问题其实远远不止于这个问题。会涉及到进程的启动,Binder的线程池,ActivityThread中的消息处理。原创 2016-08-19 00:20:31 · 2077 阅读 · 0 评论 -
Android Bitmap深入介绍(三)--- 开源加载框架简述
目前使用非常广泛的框架技术主要有Android Universal Image Loader,Picasso, Glide和Fresco,最开始出现的应该算是UIL(Universal Image Loader),记得刚开始用图片加载框架的时候,主要就是使用UIL,UIL功能丰富。Picasso是Square搞出来的,Glide与Picasso比较类似,Google推荐Glide,Fresco是Facebook推出的原创 2016-06-19 21:14:42 · 2886 阅读 · 0 评论 -
Android Bitmap深入介绍(二)--- 优化技术
这一篇主要介绍Bitmap相关的一些优化技术,包括加载图片,图片内存管理,图片缓存。原创 2016-06-13 15:14:02 · 4910 阅读 · 0 评论 -
Android源码抽象工厂---IPolicy
在Android源码中,这个IPolicy就是一个简单的抽象工厂模式。它负责创建Winodw,WindowManagerPolicy, LayoutInflater,FallbackEventHandler。抽象工厂意图提供一个创建一系列相关或相互依赖对象的接口,而无需指定他们具体的类。下面分析一下IPolicy及其实现,以及创建的相关对象原创 2016-04-19 11:45:29 · 3413 阅读 · 0 评论 -
Xposed源码阅读小结
最近借助着邓凡平的这篇文章深入理解Android(三):Xposed详解去阅读了一下Xposed的Hook源码,在这里总结一下Xposed使用的一些东西。原创 2016-05-20 20:16:23 · 1217 阅读 · 0 评论 -
Android源码代理模式---Binder
Binder是Android的进程间通信核心,如果看过Android源码,你会发现源码中Android的各种核心服务都是通过Binder机制进行相互通信的。在Binder的client部分就是通过代理模式来访问Server端的。这里想通过代理模式来详细介绍Java层Binder(源码基于6.0.1)。文中会简单介绍代理模式,详细介绍Binder机制。代理模式意图对其他对象提供一种代理以控制对这个对象的访问。原创 2016-04-23 11:35:31 · 5040 阅读 · 0 评论 -
Otto与EventBus框架比较
最近这几天经常在空闲时间看到了AOP编程,其实也就是对面向事件过程编程,一开始一直很难理解这个名次。不过看到Android正好有面向事件编程,程序解藕的开源库(Otto,EventBus)。所以闲暇时间就去看了一下这两个库的源码,写篇博客记录一下。其实很多时候,沉下心去做一件事就好了,收获会伴随着的。用法首先从用法上面来说,两个框架的用法本质上其实是差不多的:注册(register),发布事件(po原创 2015-11-19 19:01:40 · 4627 阅读 · 0 评论 -
关于setVisibility的疑惑
疑惑1:有时候重写ViewGroup之类的时候,调用了Layout的setVisibility,但是它的child总是不能够正确显示。比如调用setVisibility(View.GONE) ,但是却没有效果,只有调用一次调用子类的setVisibility才能够让其gone。代码如下:@Override public void setVisibility(int visibility) {原创 2013-04-24 19:31:52 · 7978 阅读 · 1 评论 -
handler总结
越来越发觉handler的重要性,索性就总结一些。 Looper:就相当于一个循环,ui线程中会自动初始化,原创 2013-10-18 15:22:17 · 770 阅读 · 0 评论 -
各种android手机所拥有的手机传感器
大家都知道android官网上面提供了11中传感器。但是各种不同的手机,提供的传感器都是不尽相同的。官网上显示的传感器:#define SENSOR_TYPE_ACCELEROMETER 1 //加速度#define SENSOR_TYPE_MAGNETIC_FIELD 2 //磁力#define SENSOR_TYPE_ORIENTATION原创 2013-10-17 15:00:36 · 1445 阅读 · 0 评论 -
模仿的豌豆荚滑动Menu 的 实现
效果:其实就是利用监听手势。将主页面滑开。将下面一层布局的菜单展露出来。下面是布局文件。<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layo原创 2013-04-08 22:22:16 · 1196 阅读 · 0 评论 -
android AsyncTask 学习
最近发现AsyncTask 用起来,整体性更强。AsyncTask 跟Handler + runnable 很像。主要是用来更新UI。AsyncTask的方式对无限循环的方式并不太合适,可能更合适使用Runnable或者Thread。 额,各种博客,贴都讲了不少,有不少争论,有人说好,有人说有时候好。。。这里不多说了,但是个人感觉用起来整体性更强。逻辑性好。写下博客,增加下认识。共同原创 2013-04-07 22:00:16 · 805 阅读 · 0 评论 -
View 的ContextView
用showContextView 打开View的ContextView 通过setOnCreateContextMenuListener() 来设置处理的方式原创 2013-03-24 17:04:42 · 1292 阅读 · 0 评论 -
android 调用draw(canvas) 函数自动退出
我试了在android中直接调用TextView的draw 函数,结果直接退出。。。代码如下:public class Main extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setConte原创 2013-03-28 16:35:57 · 2081 阅读 · 0 评论 -
android LayoutInflater的获取
LayoutInflater 获取有三种方法。LayoutInflater mContext.getSystemService(Context.LAYOUT_INFLATER_SERVICE) ;LayoutInfalter LayoutInfalter.from(Context contextf);这两个函数是一样的结果:LayoutInflater.from 的实现如下原创 2013-03-14 21:54:32 · 1844 阅读 · 0 评论 -
android 触摸事件、点击事件的区别
转自:http://my.oschina.net/zhangqingcai/blog/29468针对屏幕上的一个View控件,Android如何区分应当触发onTouchEvent,还是onClick,亦或是onLongClick事件?在Android中,一次用户操作可以被不同的View按次序分别处理,并将完全响应了用户一次UI操作称之为消费了该事件(consume),那么Andr转载 2013-01-17 18:51:43 · 730 阅读 · 0 评论 -
设置android WindowManager
//去除默认时有的黑色背景,设置为全透明mLayoutParams = new WindowManager.LayoutParams();mLayoutParams.format = PixelFormat.RGBA_8888;//一下可设置为可点击params.type = WindowManager.LayoutParams.TYPE_PHONE;params.flags =原创 2013-01-12 00:21:20 · 1655 阅读 · 0 评论 -
getWritableDatabase()和getReadableDatabase()方法区别
转自:http://my.oschina.net/AlexZhuang/blog/53491Android使用getWritableDatabase()和getReadableDatabase()方法都可以获取一个用于操作数据库的SQLiteDatabase实例。其中getReadableDatabase()方法则是先以读写方式打开数据库,如果数据库的磁转载 2012-09-01 16:36:19 · 792 阅读 · 0 评论 -
Matrix
Matrix.setRotate(float,float,float) 其坐标都是相对图片的中心而言的,一个参数的是就是绕图片的中心。原创 2012-08-16 14:18:17 · 604 阅读 · 0 评论 -
做过的应用截图。
该应用是跟同学一起合作做的。一个简笔画的应用。主UI选择背景自制摄像:原创 2013-04-11 08:40:48 · 1081 阅读 · 0 评论