- 博客(28)
- 收藏
- 关注
原创 CocosCreator的踩坑之旅
重新安装显卡驱动参考:http://forum.cocos.com/t/cocos-creator/35693/8http://www.cocoachina.com/bbs/read.php?tid-457588.html
2017-01-11 17:18:03
4890
转载 Android中View,SurfaceView和GLSurfaceView绘图的区别
转载:https://zhidao.baidu.com/question/626501648785925724.html Android游戏开发中常用的三种视图是:View、SurfaceView和GLSurfaceView,区别如下: View:显示视图,内置画布,提供图形绘制函数、触屏事件、按键事件函数等;必须在UI主线程内更新画面,速度较慢,用于被动更新画面。
2016-12-24 16:03:13
2571
原创 GUI系统总结
GUI系统之SurfaceFlinger一、整体架构1. Linux内核提供了framebuffer的显示驱动,fb0表示第一个显示屏;2. Android的HAL层提供了Gralloc,包括fb和gralloc两个设备。前者负责打开内核中的framebuffer、初始化配置、并提供了post,setSwapInterval等操作接口;后者则管理帧缓冲区的分配和释放;3. HAL层
2016-12-22 10:14:05
2187
转载 常见Layout的LayoutParams总结
参考:Android MarginLeft与MarginStart的区别http://blog.youkuaiyun.com/zhufuing/article/details/40181815常见Layout的LayoutParams总结http://haking.iteye.com/blog/1182334LayoutParams// <-- android.view.ViewG
2016-12-17 22:15:29
576
原创 ViewGroup和View以及TouchDelegate的触摸事件源码简析
参考:浅尝安卓事件分发机制http://blog.youkuaiyun.com/zhaizu/article/details/50489398深入Android开发之--理解View#onTouchEventhttps://my.oschina.net/banxi/blog/187267?p=1Android 触摸消息处理http://blog.youkuaiyun.com/siobhan
2016-12-15 20:14:36
390
原创 GestureDetector分析
public class GestureDetector { public interface OnGestureListener { //单纯的手指按下时触发 boolean onDown(MotionEvent e); //按下一段时间TAP_TIMEOUT后触发,用来给出提示,不影响之后单击的判定 void onSho
2016-12-15 14:42:14
307
转载 Scroller的用法,VelocityTracker用法,以及滑动冲突的处理
参考:http://blog.youkuaiyun.com/yanghuinipurean/article/details/50419455/** * 仿微信刷新 * @author Nipuream */public class WXLayout extends LinearLayout{ private static final String TAG = "WXLayout";
2016-12-14 21:36:21
453
原创 SparseArray分析
SparseArray是android里为 这样的Hashmap而专门写的类,目的是提高效率,其核心是折半查找函数(binarySearch)。满足下面两个条件我们可以使用SparseArray代替HashMap:1. 数据量不大,最好在千级以内2. key必须为int类型或者long,这中情况下的HashMap可以用SparseArray或LongSparseArray代替3
2016-12-14 14:47:56
370
原创 AsyncTask分析
1. 调用AsyncTask的execute方法,实际上是传入了doInbackground执行所需的参数,内部继续调用了Executor的execute方法来执行内部定义好的FutureTask对象。而FutureTask执行的是内部定义好的WorkerRunnable对象,WorkerRunnable的call方法将外部提供的参数传递给doInBackground,直到doInBackgrou
2016-12-13 22:17:58
248
转载 ThreadLocal和同步异步的解释
1. ThreadLocal不是用来解决对象共享访问问题的,而主要是提供了保持对象的方法和避免参数传递的方便的对象访问方式。归纳了两点: a. 每个线程中都有一个自己的ThreadLocalMap类对象,可以将线程自己的对象保持到其中,各管各的,线程可以正确的访问到自己的对象。 b. 将一个共用的ThreadLocal静态实例作为key,将不同对象的引用保存到不同线程的ThreadLoca
2016-12-13 18:34:34
1152
原创 Android消息机制的疑难点说明
参考:http://blog.youkuaiyun.com/chwan_gogogo/article/details/46953575 Java层http://blog.youkuaiyun.com/chwan_gogogo/article/details/46953563 专讲C层文件描述符http://blog.youkuaiyun.com/chwan_gogogo/article/details/46953549
2016-12-12 22:58:11
442
转载 Java对象池的简单实现
1. 对象池当调用对象时,不使用常规的new 构造子的方式,而是通过一个对象池操作。即如果池中存在该对象,则取出;如果不存在,则新建一个对象并存储在池中。当使用完该对象后,则将该对象的归还给对象池。这里会存在几个问题,必须注意。Tips 1,考虑多线程状态下的存取对象;Tips 2,考虑将对象池目录表设计为Singleton模式,这样使得内存中仅存在唯一的一份缓存对象的表。
2016-12-12 14:46:56
2837
转载 ANR初步探讨
ANR(Application Not Responding)定义在Android上,如果你的应用程序有一段时间响应不够灵敏,系统会向用户显示一个对话框,这个对话框称作应用程序无响应(ANR:Application Not Responding)对话框。用户可以选择“等待”而让程序继续运行,也可以选择“强制关闭”。所以一个流畅的合理的应用程序中不能出现anr,而让用户每次都要处理这个对话框。因
2016-12-12 11:40:26
226
原创 container_of分析
#define container_of(ptr, type, member) ({ \const typeof( ((type *)0)->member ) *__mptr = (ptr); \(type *)( (char *)__mptr - offsetof(type,member) );})
2016-12-12 10:13:28
295
原创 Android开发艺术探索》综合技术,JNI和性能优化小结
1. 当crash发生时,系统就会调用UncaughtExceptionHandler的uncaughtException方法,可以读取到异常信息;实现UncaughtExceptionHandler接口,在uncaughtException(Thread t, Throwable ex),ex.printStackTrace(PrintWriter pw)读取异常信息;public vo
2016-12-08 14:04:53
734
原创 《Android开发艺术探索》第十二章Bitmap加载和Cache小结
1. Bitmap的高效加载1)BitmapFactory提供了decodeFile(decodeFileDescriptor),decodeResource,decodeStream和decodeByteArray分别用于从文件、资源、输入流以及字节数组中加载Bitmap对象;2)修改BitmapFactory.Options的inSampleSize采样率来加载所需尺寸的图片;将Bit
2016-12-08 10:20:43
418
原创 《Android开发艺术探索》第十章Android的消息机制、十一章线程和线程池小结
1. Handler可以将更新UI的操作切换到主线程,MessageQueue采用单链表来存储消息,Looper回无限循环的查找新消息,ThreadLocal可以在每个线程中存储数据,Handler的send被调用时,会调用MessageQueue的enqueueMessage方法将这个消息放入消息队列中,然后Looper发现有新消息就会处理,最终消息中的Runnable或者Handler的han
2016-12-07 16:50:07
215
原创 《Android开发艺术探索》第九章四大组件的工作过程小结
1. 运行状态1)除了BroadcastReceiver以外,其他三种必须在AndroidManifest中注册,ContentProvider的调用不需要Intent;2)Activity通过显示或者隐式Intent启动,有四种启动模式,通过finish方法结束,主要作用是展示界面和用户交互;3)Service用于在后台执行计算任务,有启动和绑定两种状态,启动状态不需要和外界交互,后
2016-12-07 11:11:27
300
原创 《Android开发艺术探索》第八章Window和WindowManager小结
1. 概述Window是一个抽象类,具体实现是PhoneWindow,通过WindowManager创建。Window的具体实现位于WMS中,WindowManager和WMS是IPC交互过程。通过mWindowManager.addView(view, layoutParams);添加一个Window。Window有三种类型,应用Window(对应Activity),子Window(
2016-12-06 21:55:05
441
原创 《Android开发艺术探索》第四章View的工作原理小结
1. 外部拦截法:重写父容器的onInterceptTouchEvent,在ACTION_MOVE中根据滑动方向判断是否需要由父容器拦截;2. 内部拦截法:父容器不拦截任何事件,如果子元素需要此事件就消耗掉,否则设置为让父元素消耗;重写子元素的dispatchTouchEvent方法,在ACTION_DOWN中设置requestDisallowInterceptTouchEvent(tru
2016-12-06 15:33:59
248
原创 《Android开发艺术探索》第三章View事件体系小结
1. x轴和y轴的正方向分别为向右和向下,translationX和translationY表示View左上角相对于父容器的偏移量x=left+translationX, y=top+translationY,平移过程中left和top的值不会改变;2. MotionEvent: ACTION_DOWN, ACTION_MOVE, ACTION_UP,getX和getY返回相对于当
2016-12-06 12:53:13
251
原创 《Android开发艺术探索》第二章IPC机制小结
1. 通过android:process开启新的进程进程名以“:”开头的属于当前应用的私有进程,其他应用的组件不可以和它跑在同一个进程中,不以冒号开头的为全局进程,其他应用可以通过ShareUID方式可以和它跑在同一个进程中。要求ShareUID相同且签名相同,可以访问对方的私有数据,如data目录、组建信息等。同一个应用的多进程,相当于两个不同的应用采用了ShareUID的模式。
2016-12-05 19:55:17
268
原创 《Android开发艺术探索》第一章Activity的生命周期和启动方式小节
第一章 Activity的生命周期和启动模式1. onCreate:setContentView加载布局资源onRestart,onStart,onResume,onPause,onStop,onDestroyonStart和onStop表示Activity是否可见,onResume和onPause表示Activity是否位于前台2. 异常情况下生命周期资源相关系统配
2016-12-05 16:59:07
244
原创 各种启动过程 通过Launcher启动MainActivity的过程
参考罗升阳《Android系统源代码情景分析(修订版)》一、Zygote的启动过程Zygote是由Android系统的第一个进程init启动起来的,init是内核在加载完成之后就启动起来的;Zygote进程通过复制自身的方式创建System进程和应用程序进程,同时复制虚拟机实例;通过init.rc来启动,并创建一个名称为zygote的socket,便于各种服务与之通信;
2016-12-02 15:48:31
1968
原创 《Android开发艺术探索》第三章事件分发机制小结
参考《Android开发艺术探索》public boolean dispatchTouchEvent(MotionEvent ev){boolean consume = onInterceptTouchEvent(ev);if(consume){return onTouchEvent(ev);}else{return child.dispatchTouchEvent
2016-11-28 19:07:28
265
转载 onWindowFocusChanged重要作用
http://www.cnblogs.com/lijunamneg/archive/2013/01/19/2867532.htmlActivity生命周期中,onStart, onResume, onCreate都不是真正visible的时间点,真正的visible时间点是onWindowFocusChanged()函数被执行时。译注:从onWindowFocusChang
2016-11-27 19:55:37
202
转载 Java的内部类(Inner Class)和嵌套类(Nested Class)的区别
转载地址 http://blog.youkuaiyun.com/holmes_conan/article/details/41179353内部类是类中类(内部类不为同一包的其他类可见,具有很好的封装性),分为静态内部类,成员内部类,局部内部类以及匿名内部类;局部内部类写在方法里面;用到最多的就是匿名内部类,例子如下:首先定义一个接口:Interface A{ public vo
2016-11-24 15:09:15
270
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人