输入事件的分发

2016-2-25 chenhui 输入系统

流程: InputReader 线程通过 EventHub 监听 /dev/input 内的文件 InputReader 得到输入事件,封装后存入 InputDispatcher 的队列 唤醒 InputDispatcher  InputDispatcher 取出输入事件,并传递给 Window ...

阅读全文>>

评论(0) 浏览(289)

输入事件的读取

2016-2-25 chenhui 输入系统

在 输入系统的初始化 这篇文章中介绍了输入系统的初始化,也就是 InputManager、EventHub、InputReader 以及 InputDispatcher 这四个对象的初始化。这四个对象非常重要:EventHub 通过 epoll 监听输入设备,然后 InputReader 通过 EventHub 得到输入信息,并交给 InputDispatcher,I...

阅读全文>>

评论(0) 浏览(227)

输入系统的初始化

2016-2-25 chenhui 输入系统

每一个设备驱动都会在用户空间提供一个文件作为访问接口,输入子系统的文件存放在 /dev/input/ 目录下面,文件名以 event<Number> 格式生成,用户空间可以对他调用 ioctl() 来得到他是什么样的设备以及他的相关信息。 Android 提供了 getevent 工具来监听所有输入设备的输入,我们可以使用 adb shell 进入手机的命令行,然后...

阅读全文>>

评论(0) 浏览(446)

什么是输入系统

2016-2-25 chenhui 输入系统

我们在编写 Android 应用程序时,经常能使用到各自事件,比如点击事件,松开事件,这些事件实际上都是触摸屏这个设备触发的。 Linux 内核中会有一个输入子系统,这个输入子系统下面又有多个输入设备驱动,其中一个就是触摸屏的驱动,这个触摸屏的驱动会监听触摸屏按下松开所触发的 IRQ 中断,并上报给用户空间,Android 捕获到他上报的事件后,就会对坐标开始分析...

阅读全文>>

评论(0) 浏览(161)

弹性滑动

2016-2-24 chenhui 滑动

我们在使用一些 APP 时,滑动的速度会随着进度变化,而不是僵硬的以相同速度进行滑动。这就是所谓的弹性滑动。 下面介绍实现弹性滑动的方法。 我们知道,ViewGroup 是 View 的子类,只要是 View,那他就通过 onDraw 来绘制自身。而在绘制自身时,他会调用一个名为 computeScroll 的函数。这是背景知识。 然后我...

阅读全文>>

评论(0) 浏览(148)

内存和代码优化

2016-2-24 chenhui 零散笔记

内存优化主要是 Bitmap 的优化,在使用 Bitmap 的时候,要注意下面几点: 及时回收内存。在用完 Bitmap 后,要及时调用 bitmap.recycle() 来释放他 使用 LruCache 来对图片进行缓存 代码优化就多了,注意点如下: 减少成员变量,尽量使用局部变量 减少对象的创建...

阅读全文>>

评论(0) 浏览(152)

布局优化

2016-2-24 chenhui 零散笔记

尽量避免重叠绘制,即一个 View 叠在另一个 View 上面。 优化布局层数,布局文件的 XML 树不能太高。 使用 <include /> 来重用布局文件。 如果我们需要一开始就隐藏某个 View,那么使用 <ViewStub /> 标签来包住他,他默认是不显示的,可以在 Java 里显示他。他的优势是只有在...

阅读全文>>

评论(0) 浏览(143)

APK 的反编译和打包

2016-2-23 chenhui 零散笔记

Android 的 Apk 包,本质上是一个带有签名的 ZIP 压缩包,我们可以直接用 ZIP 压缩软件解压他。 下面是微信的 Apk 包解压后的内容: assets 存放了一些配置文件 lib 目录存放了一些 NDK 库 r 目录是资源文件 META-INF 目录存放签名文件 cl...

阅读全文>>

评论(0) 浏览(160)

滑动基础

2016-2-22 chenhui 滑动

滑动效果是基于屏幕触摸事件的,屏幕触摸事件可分为如下三种: ACTION_DOWN ACTION_MOVE ACTION_UP 三种事件共同构成了滑动效果。在手指按下时,准备滑动;当手指在屏幕滑动时,滑动开始;当手指松开屏幕时,滑动结束。 我们可以通过 VelocityTracker 对象来追踪滑动速度,包括水平和垂直方向的速度。使...

阅读全文>>

评论(0) 浏览(151)

实现 ViewPager

2016-2-22 chenhui 自定义控件

实现 ViewPager 的滑动功能是学习自定义控件很好的一个例子,本文一步步介绍如何实现 ViewPager 的滑动功能,了解了滑动功能如何实现,便能了解比如 QQ 侧滑菜单、APP 的下拉引导页是怎么实现的。 ViewPager 实际上是一个包含了若干个页(View)的 ViewGroup,所以我们实现他时,必须先继承 ViewGroup: public class MVi...

阅读全文>>

评论(0) 浏览(187)

滑动效果的七种实现

2016-2-21 chenhui 滑动

总共有七种方法可供我们实现滑动效果,下面来介绍他们。 在 View 的 onTouchEvent() 里调用自己的 layout() 方法,传入要更改的坐标值 在 onTouchEvent() 里调用自己的 offsetLeft(Top)AndRight(Bottom)(int offsetX[或offsetY]) 方法,传入的值是 View 要向左或向下的偏移数 ...

阅读全文>>

评论(0) 浏览(144)

SDK 的更新

2016-2-19 chenhui AndroidStudio

打开 SDK Manager: 打开后的界面如下: 操作和 Eclipse 的 SDK Manager 是一样的,如果没有翻墙工具,可以使用镜像站来进行更新, 先打开代理设置: 然后在打开的界面里填入镜像站和端口即可:

阅读全文>>

评论(0) 浏览(129)

主题的切换

2016-2-19 chenhui AndroidStudio

先进入设置界面: 然后选择 Theme 下拉菜单里的选项即可: Darcula 主题是常见的黑色主题,程序员都用这个。

阅读全文>>

评论(0) 浏览(113)

AndroidStudio 的下载和配置

2016-2-19 chenhui AndroidStudio

下载地址:developer.android.com/sdk/installing/studio.html 镜像地址:www.androiddevtools.cn/ 在安装 AndroidStudio 后,需要配置 Java 的环境变量: export JAVA_HOME=<Java Path>; export JRE_HOME=$JA...

阅读全文>>

评论(0) 浏览(173)

输入系统的移植

2016-2-18 chenhui 移植

输入系统,就是用来接收并处理用户通过触摸屏、键盘(这两个也是最标准的输入设备)等设备发出的输入信息的系统。 和显示系统一样,输入系统也是由:Linux 驱动、HAL 模块、Framework 层组成的,只是显示系统的 Linux 驱动使用的是 FrameBuffer,而输入系统使用的则是 Linux 内核中的输入子系统。 输入子系统和 Fram...

阅读全文>>

评论(3) 浏览(1404)

显示系统的移植

2016-2-17 chenhui 移植

如果你会编写 Linux 驱动或者会编写基于 Linux 的 GUI 程序,那么你就应该清楚内核是通过 FrameBuffer 机制来为上层提供绘制屏幕图像的接口的。 FrameBuffer 实际上是一个驱动程序,但他和普通的驱动程序有点不一样,他这个驱动程序是一个框架,真正的硬件细节代码需要程序员另外编写 FrameBuffer 驱动来实现。这么做是因为不同的驱...

阅读全文>>

评论(0) 浏览(396)

MeasureSpec

2016-2-17 chenhui 自定义控件

MeasureSpec 在 View 的绘制中,起到记录 View 的大小和位置信息的作用。 他是一个 32 位的 int 值,其高 2 位是测量模式,其余的位是 View 的高/宽,什么是测量模式?我们知道,在 Android 中,View 的大小可以是一个具体值,也可以是 match_parent 或 wrap_content,这三种大小都有自己的测量模式,高 2...

阅读全文>>

评论(0) 浏览(173)

Android 系统目录

2016-2-16 chenhui 零散笔记

系统目录 /system/app/      系统 APP 目录 /system/bin/         系统自带组件目录 /system/frot/     系统字体 /system/framework/     系统...

阅读全文>>

评论(0) 浏览(163)

添加新设备

2016-2-13 chenhui 移植

Android 由两个部分组成: 为 Android 定制过的 Linux 内核 真正的 Android 系统:处于用户空间的虚拟机和各自库  所谓的移植,其实就是移植(或编写)驱动以让系统能够在某个硬件平台上运行,Android 也是这样。 我们一定要搞清楚一件事:除了修改过的 Linux ...

阅读全文>>

评论(0) 浏览(428)

Android 编译系统

2016-2-13 chenhui 移植

Android 也是使用 Makefile 来对源代码进行编译,他有几个非常重要的 Makefile 文件如下: /Makefile     /Build/core/main.mk            &nb...

阅读全文>>

评论(0) 浏览(176)

Copyright ©2015-2016 freehui All rights reserved