随笔
文章平均质量分 61
烤奶酪儿
这个作者很懒,什么都没留下…
展开
-
IPC基础小记
继续了解IPC还需要了解Serializable接口Parcelable接口和BinderSerializable接口一个序列化接口,它是一个空接口,用于对像的实例化,那么新的问题来了 到底啥叫序列化还有反序列化又是个啥? Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。 想要对一个对象实现序列化,只需要这个类实现Serializa原创 2016-04-05 22:06:25 · 235 阅读 · 0 评论 -
View的滑动冲突
1.滑动冲突的产生: 在界面中要内外两层同事可以滑动,这个时候就会产生滑动冲突。 常见的滑动冲突场景可以简单分为三种: 场景1—–外部滑动方向和内部滑动方向不一致。 场景2—–外部滑动方向和内部滑动方向一致。 场景3—–上面两种情况的嵌套。 外部滑动方向和内部滑动方向不一致:主要是讲ViewPager和Fragment配合使用所组成的页面滑动效果,主流应用几乎都会使用这个效果。在这种效果中,可以原创 2016-04-19 21:08:06 · 292 阅读 · 0 评论 -
View的滑动
通过三种方式可以实现View的滑动: 第一是通过View本身提供的scrollTo/scrollBy方法来实现滑动; 第二是通过动画给View施加平移效果来实现滑动; 第三是通过改变View的LayoutParams使得View重新布局从而实现滑动 1.使用scrollTo/scrollBy 先贴源码 /** * Set the scrolled position of your原创 2016-04-14 21:40:51 · 214 阅读 · 0 评论 -
自定义View
自定义View的分类 继承View重写onDraw方法 这种方法主要用于实现一些不规则的效果,即这种效果不方便通过布局的组合方式来达到,旺旺需要静态或者动态的显示一些不规则的图形。很显然这种需要通过绘制的方式来实现,即重写onDraw方法。采用这种方式需要自己支持wrap_content,并且padding也需要自己处理。 继承ViewGroup派生特殊的Layout 这种方法主要用于实现自定义原创 2016-04-28 16:48:13 · 259 阅读 · 0 评论 -
View的工作流程(layout过程)
layout过程Layout的作用是ViewGroup用来确定子元素的位置,当ViewGroup位置被确定后,它在onLayout中会遍历所有的子元素并调用其layout方法,在layout方法中onLayout方法又会被调用。layout方法确定本身的位置,而onLayout方法则会确定所有子元素的位置。 public void layout(int l, int t, int r, int b)原创 2016-04-28 16:02:27 · 321 阅读 · 0 评论 -
View的工作流程
View的工作流程主要是指measure、layout、draw三大流程,即测量、布局、绘制,其中measure确定View的测量宽高,layout确定View的最终宽高和四个顶点的位置,而draw则将View绘制到屏幕上。measure过程该过程需要分情况来看,如果是一个原始的View,那么通过measure方法就可以完成其测量过程,如果是一个ViewGroup,除了完成自己的测量过程,还会遍历去原创 2016-04-27 20:43:42 · 274 阅读 · 0 评论 -
View的工作原理
ViewRootViewRoot对应ViewRootImpl类,他是连接WindowManager和DecorView的纽带,View的三大流程均是通过ViewRoot来完成的。在ActivityThread中,当Activity对像被创建完毕后,会将DecorView添加到Window中,同时会创建ViewRootImpl对像,并将ViewRootImpl对像和DecorView建立关联,过程参见原创 2016-04-27 19:03:42 · 279 阅读 · 0 评论 -
滑动冲突的解决方式
1.外部拦截 点击事件斗仙经过父容器的拦截处理,如果父容器需要此事件就拦截,否则就不拦截。外部拦截需要重写父容器的onInterceptTouchEvent方法,在内部做相应的拦截即可。 2.内部拦截 内部拦截是指父容器不拦截任何事件,所有的时间都传递给子元素,如果子元素需要此事件就直接消耗掉,否则交由父容器处理,此方式需要配合requestDisallowInterceptTouchEven原创 2016-04-20 19:26:12 · 443 阅读 · 0 评论 -
IPC小记Binder连接池
使用AIDL通信流程: 首先创建一个Service和一个AIDL接口,接着创建一个类继承AIDL接口中的Stub类并实现Stub中的抽象方法,在Service的onBind方法中返回这个类的对像,然后客户端就可以绑定服务端Service,建立连接后就可以访问远程服务端的方法了。 随着AIDL数量的增加我们不能无限制的增加Service,所以我们需要将所有的AIDL放在同一个Service去管理。原创 2016-04-13 21:13:46 · 285 阅读 · 0 评论 -
IPC小记 Socket
Socket也成套接字,分为流式套接字和用户数据报套接字两种,分别对应于网络传输控制层中的TCP和UDP协议。 TCP: TCP协议是面向连接的协议,提供稳定的双向通信功能,TCP连接的建立需要经过“三次握手”才能完成,为了提供稳定的数据传输功能,其本身提供了超时重传机制,因此具有很高的稳定性。 UDP: UDP是无法连接的,提供不稳定的单向通信功能,当然UDP也可以实现双向通信功能。在性能原创 2016-04-13 18:52:57 · 207 阅读 · 0 评论 -
Android中的IPC方式
首先仍然是关于Binder的Binder中有俩很重要的方法linkToDeath和unlinkToDeath.通过linkToDeath我们可以额给Binder设置一个死亡代理,当Binder挂掉时,我们就会接到通知,此时我们可以重新发起链接请求从而恢复链接。 首先:声明一个DeathRecipient对像mDeathRecipient = new DeathRecipient() {原创 2016-04-12 21:20:02 · 262 阅读 · 0 评论 -
IPC基础小记 关于Binder
Binder是Android中的一个类,它实现了IBinder接口。 从IPC角度来说Binder是Android中的一种跨进程通信方式 Binder是桥梁,Binder是媒介。。。给笔者印象Binder就是个顺丰。。。 我们可以通过AIDL文件生成一个Binder类 新建一个文件后缀改成.aidl敲如下代码package com.example.testandroid;parcelable原创 2016-04-07 21:44:56 · 252 阅读 · 0 评论 -
IPC小记
1.IPC是什么鬼?IPC是Inter-Process Communication的缩写,含义为进程间通信或者跨进程通信,说白了是进程间数据交换的过程。 一个进程指一个程序或者应用,一个进程里可以含有多个线程。2.多进程开启的场景一般多进程情况有两种: NO.1 程序某些模块由于特殊原因需要运行在单独的进程中,或者为了加大一个应用可使用内存,Android对单个应用使用的最大内存做了限制,网上原创 2016-04-05 21:21:45 · 233 阅读 · 0 评论 -
View的事件分发机制
点击事件的传递规则MotionEvent即点击事件,所谓点击事件的事件分发,其实就是对MotionEvent时间的分发过程,即当一个MotionEvent产生以后,系统需要把这个时间传递给一个具体的View,而这个传递的过程就是分发过程。点击事件分发过程由三个很重要的方法来共同完成:dispatchTouchEvent、onInterceptTouchEvent和onTouchEvent。publi原创 2016-04-19 20:59:32 · 220 阅读 · 0 评论