- 博客(9)
- 资源 (5)
- 收藏
- 关注
原创 【Android View事件分发机制】原理
事件体系中的几个基础类MotionEvent点击事件的封装。getX/Y相当于当前View左上角的x,y坐标getRawX/Y相对于手机屏幕左上角的x,y坐标GestureDetector 手势识别器 @Override public boolean onTouchEvent(MotionEvent event) { if (gestureDetector == null)
2017-04-28 07:43:12 455
原创 【Android View基础】View中几个容易混淆的距离及坐标量
left ,right,bottom,top相对父容器的距离 tranlationX/Y vs mScrollX/Y释义角度tranlationX/Y:View的左上角相对于父容器的偏移量。mScrollX/Y:View内容左/上边缘相对于View左/上边缘的偏移量总结二者都是表示某种偏移量,这是易于混淆的地方,但是根据释义以及上面A,B图,偏移量的对比物是完全不一样的。tranlati
2017-04-21 07:37:55 487
原创 【Android View绘制体系】invalidate
invalidate内部思想 invalidate的调用流图View.invalidateInternal打上DIRTY标记为后面Draw做准备mPrivateFlags |= PFLAG_DIRTY;调用父组件的invalidateChild并将自身相对位置left,top,right,bottom通知给父组件ViewGroup.invalidateChild循环执行父组件的invalida
2017-04-20 10:29:40 1417
原创 android源码中常用的Rect方法
inset dirty.inset(-1, -1);缩小还是扩大矩形。如果为正值,则是缩,反之就是扩。dx:左边及右边dy:上边及下边offset dirty.offset(0, -mCurScrollY);向上偏移mCurScrollY像素 setmTempRect.set(dirty);将dirty的内容复制到mTempRectunion localDirty.union(dirty.
2017-04-20 10:28:45 840
原创 聚合Aggregation与合成Composition
合成 or 组合强拥有,大雁和翅膀,大雁绝对不能没有翅膀 组合关系的类里含有另一个类的实例化 大雁类(Goose)在实例化之前 一定要先实例化翅膀类(Wings) 两个类紧密耦合在一起 它们有相同的生命周期 翅膀类(Wings)不可以脱离大雁类(Goose)而独立存在聚合弱拥有,雁群和大雁, 聚合关系的类里含有另一个类作为参数 雁群类(GooseGroup)的构造函数中要用到大雁(Goose
2017-04-17 22:36:50 408
原创 桥接模式
使用场景一个类存在两个独立变化的维度,而且这两个维度都需要进行扩展。很容易懂的例子手机我们经历了功能机及智能机时代。功能机时代软件都是各个手机厂商自己开发的,A手机厂商的软件不能在B手机厂商的机器上使用。 智能机时代软件和手机品牌是独立发展的,互不干扰。而他们之间通过一个抽象的“手机软件”接口来实现连接。聚合关系
2017-04-17 22:22:35 233
原创 【Rxjava】通俗说Rxjava
如下为Rxjava最基础也是最常见的使用样例: /** * 最基础的使用 */ Observable.create(new OnSubscribe<String>() { @Override public void call(Subscriber<? super String> arg0)
2017-04-04 21:53:12 444
原创 【Android基础】从属性动画看代码设计的艺术
3.0引入的属性动画相比之前的帧动画及补间动画做出了很大的设计上的突破,功能更加强大,结构上更加松耦合。在设计上很值得我们去学习。做了这么几层抽象第一层:任何View的动画都可以抽象成对View某种属性值的改变。 ObjectAnimator colorAnim = ObjectAnimator.ofArgb(ballView, "color", Color.BLUE, Color.RED, Col
2017-04-03 18:53:37 305
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人