自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(22)
  • 资源 (3)
  • 收藏
  • 关注

原创 Android插件化基础--Binder机制

Binder是一套基于CS的架构。下面以一个极简的例子来学习Binder。1.首先定义一个IMedia.aidl文件。interface IMedia { boolean start(); boolean stop();}2.然后IDE会帮我们自动生成一个IMedia.java文件public interface IMedia extends an...

2018-03-16 15:53:43 319

原创 Android Gradle Plugin获取依赖API详解

1. VariantConfiguration// 获取参与编译的依赖getCompileDependencies()// 获取参与打包的依赖getPackageDependencies()这两个API返回的都是DependencyContainer接口2. DependencyContainer// 获取顶层依赖getDependencies();// 获取所有依赖getAllDepe

2017-08-11 14:40:06 2240

原创 项目构建工具Gradle详解

1.Gradle介绍简单的说,Gradle就是用来构建项目的一个工具。基于JVM像ant一样通用灵活像maven一样约定优于配置支持多工程构建强大的依赖管理对已有的maven和ivy仓库全面支持支持传递性依赖管理基于groovyGradle与Ant、Maven的关系在eclipse中也有构建项目的概念,用的是一款叫ant的工具。 做J2EE开发的会用到maven下载jar包。

2017-08-04 14:44:50 1855

原创 APP混淆后Cookie不能正确保存的解决办法

背景: 使用OkHttp做网络请求,并且用到了持久化Cookie,app没有混淆一切正常,但是混淆之后,不能正常读取cookie了。经过排查发现是序列化的cookie字符串不正确,自然而然的想到要keep住实现了Serializable接口的类,然后就找到了SerializableOkHttpCookies这个类,代码如下:public class SerializableOkHttpCookie

2017-08-01 14:41:51 644

原创 首次进入Activity、动画卡顿问题的解决方案

初步思路,等待Activity的转场动画完成后,再开始页面内的动画

2015-07-31 18:47:38 2899

原创 android解决相机开关的问题

进入Activity,在UI线程打开相机,是个IO操作,会阻塞退出Activity,也在UI线程关闭相机,也会阻塞给用户的感觉就是卡慢,体验非常不好。参考其他APP打开二维码扫描时,都会出现一个“正在加载”的页面解决方案:开启一个子线程A,用于打开相机退出时,再开启一个线程B,用于关闭相机那么问题来了,场景如下:打开相机,又快速退出A

2015-07-22 20:29:23 1271

原创 获取类的泛型

RuntimeException 是那些可能在 Java 虚拟机正常运行期间抛出的异常的超类。 可能在执行方法期间抛出但未被捕获的 RuntimeException 的任何子类都无需在 throws 子句中进行声明。 也就是说,非RuntimeException异常类或者其子类的的异常都要声明捕捉。 只有RuntimeException 或者是其子类的异常是不需要进行声明捕捉的

2015-06-27 22:44:09 657

原创 团队管理经验

过去3年来,MIUI所取得的成绩,除了与很好的产品思路有关,还与团队的执行效率密不可分。MIUI团队采用扁平化的管理方式,没有复杂繁冗的管理流程,极大地降低了沟通成本,提高了团队执行力。设计主管任恬坦言,他们没有像其他公司的一些奇怪的管理流程。在有些公司中,设计稿完成后,要用文档写明页面结构是什么样、某个界面要放到哪里、间距是多大等交给工程师,工程师接到设计稿后要先进行评估,然后才开始做。

2014-01-10 16:26:23 941 1

原创 可拖动重排GridView

先上效果图(动态图不会做,见谅):控件功能特色:1、长按item可以拖动重排2、可以自定义重排的方式3、被移动位置和将要移动到的位置有图形显示这个控件前身来自于Github,针对其做了以下改进:1、修复了被拖动的View到边缘会消失的bug2、修复有时候数据没有重排的bug3、增加了被移动位置和将要移动到的位置有图形显示的功能Demo下载地址:

2014-01-08 11:05:25 1772 2

原创 MeasureSpec类解析

MeasureSpec.UNSPECIFIED                      0 父视图没有给子视图任何约束,想要多大尺寸都可以。MeasureSpec.EXACTLY                             1 父视图给子视图确定了大小,不管子视图想要多大,都只会给它确定好的边界。MeasureSpec.AT_MOST                

2014-01-06 16:46:31 772 1

原创 Android的Canvas学习笔记

第1节clipRect()和translate()区别初步研究得出了一些结论,首先在自定义View的onDraw()方法的代码如下: @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); Drawable drawable = getResources().getDrawable(R.draw

2013-12-24 16:40:25 719

原创 View的层次结构

setContentView(R.layout.activity_main)这行代码添加的是我们自定义的视图,那它的上层都是些什么呢?从最上面开始ViewRootImpl         |  DecorView |LinearLayout         |FrameLayout | 你的视图View view

2013-12-20 16:17:38 779

原创 Android动画fillAfter和fillBefore

fillBefore是指动画结束时画面停留在此动画的第一帧;fillAfter是指动画结束是画面停留在此动画的最后一帧。 java代码设置如下:  Java代码  /*****动画结束时,停留在最后一帧*********  setFillAfter(true);  setFillBefore(false);

2013-12-16 15:04:30 769

原创 Android刮奖控件,需要的直接拿去用

直接上效果图功能特色:1、可以设置刮开后显示文字或图片2、可以统计已刮开区域所占百分比下面是源码:@SuppressLint("HandlerLeak")public class RubberView extends TextView { private static final int W = 480; private static final int H =

2013-12-11 16:01:58 1741

原创 Path类API详解

public void addArc(RectF oval, float startAngle, float sweepAngle);添加椭圆的一部分作为新的轮廓。 mPath.reset(); RectF rectF = new RectF(5, 5, 100, 60); mPath.addArc(rectF, 0, 360);

2013-12-09 13:50:41 821

原创 View的布局(layout)过程

1、View的布局(layout)过程分析首先ViewRoot类的performTraversals()函数中调用host.layout(),host是一个View对象,layout()方法和measure()方法一样,是final类型,不能被重载。下面是View中的layout方法代码: public final void layout(int l, int t, int r,

2013-12-05 17:30:39 663

原创 计算视图大小(measure)的过程

视图是无穷大的,layout_wdith和layout_height是指父视图分配给子视图的布局大小。视图分两类,内容型视图和图形型视图。内容型视图的布局大小一般由内容的多少决定。图形型视图的布局大小一般由父视图给子视图分配的布局大小决定。1、measure内部调用过程分析上图中了描述了measure的调用过程,分析如下:(1)过程开始于ViewRoot类中的per

2013-12-05 16:25:36 1279

原创 View工作原理之触摸消息派发过程

1、触摸消息总体派发过程和按键消息派发过程类似,当底层读取到触摸消息,会回调ViewRoot内部的mInputHandler对象的dispatchMotion()方法来发送一个异步消息,该消息被函数deliverPointerEvent()处理。执行完该函数后,调用finishInputEvent()向消息获取模块发送一个回执,以便进行下一次消息派发。下面来分析deliverPointer

2013-11-30 10:59:44 942

原创 View工作原理之按键消息派发过程

1、按键派发总体过程ViewRoot中定义了一个InputHandler对象: private final InputHandler mInputHandler = new InputHandler() { public void handleKey(KeyEvent event, Runnable finishedCallback) { st

2013-11-29 11:50:22 1033

原创 创建窗口的过程

过程概述从WmS的角度来看,一个窗口并不是Window类,而是一个View类。WmS接收到用户消息后,按一定规则判断哪个窗口处于活动状态,然后把消息给该窗口的W类,W类再把消息传递给View变量,剩下的消息处理由View对象完成。窗口分类1、应用窗口,即Activity窗口2、子窗口,有父窗口的窗口3、系统窗口,属于系统级别,如Toasttoken变量的含义在创建窗口时

2013-11-26 16:40:55 698

原创 Framework概述

Framework框架,同样包含三个部分:服务端、客户端和Linux驱动。服务端包含两个重要的类ActivityManagerService.java 管理应用程序中的ActivityWindowManagerService.java 管理窗口 客户端中重要的类DecorView是FrameLayout的子类,DecorView是PhoneWindow的内部类Win

2013-11-26 15:33:41 595

原创 Binder框架

Binder是一种架构,包含服务端接口、Binder驱动、客户端接口三个模块。Binder服务端,实际上就是一个Binder类的对象。该对象一旦创建,内部会启动一个隐藏线程 ,该线程负责接收Binder驱动发送来的消息。Binder驱动中包含一个Binder mRemote对象,在服务端对象创建时相应创建。mRemote对象重载了transact(),实现了IPC通信:1、向服务端

2013-11-26 15:25:01 698 2

DragSortGridView

控件功能特色: 1、长按item可以拖动重排 2、可以自定义重排的方式 3、被移动位置和将要移动到的位置有图形显示 更多开源控件请到我的博客: http://blog.csdn.net/cmeiyuan

2014-01-08

Android刮奖控件

Android刮奖控件 功能特色: 1、可以设置刮开后显示文字或图片 2、可以统计已刮开区域所占百分比

2013-12-11

android最好用的滑动菜单SlidingMenu,没有之一

外国人实现的一个开源控件,很强大,android最好用的滑动菜单SlidingMenu,没有之一。

2013-11-08

空空如也

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

TA关注的人

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