修改Android系统的鼠标光标
2012-02-29 11:05
309 查看
如果你的Android设备支持鼠标,你将会发现默认的光标为灰色半透明的三角形,系统的默认主题是黑色的,造成很难发现鼠标的位置。所以本文介绍怎样定制Android系统的鼠标光标。
Android系统对鼠标的支持并不好,因为Android系统原本是为手机量身定做的,手机系统基本上是不需要鼠标的。但是随着Android系统移植到其他领域,对鼠标的支持也越来越有意义。现在Android已经支持鼠标了,但是有一个完善的过程。本文后面会介绍到Android对鼠标支持的一些不足。
原来我以为Android系统的光标会和Windows差不多,是一个图片资源呢。这样的话,我只需要替换掉这个图片就可以搞定了。找了好久都没有找到图片资源的位置,最终反过来思考,Android系统鼠标光标非常简单,手动绘制也不是很难的事情。会不会是代码中绘制的呢?
沿着这个思路,终于在WindowManagerService.java中,找到了相关的代码:
相关的代码位于performLayoutAndPlaceSurfacesLockedInner方法中:
可以看出默认情况下Android系统用颜色值0×66666666绘制了一个三角形,这个颜色值为32bit——A8R8G8R8,A表示透明度,0表示全部透明,0xff为不透明,0×66表示半透明。
你可以修改其中代码来修改鼠标光标的形状,需要学习一下Android绘图系统,熟悉Paint,Canvas等概念,不过挺简单的。下面是我的光标绘制的代码:
绘制的光标为一个瘦一点儿的不透明的白色填充的三角形,然后用黑色给白色三角形描边。主要是模仿Windows的光标风格,对于各种颜色基调的主题这个光标都可以很清晰。
可以看出Android系统鼠标光标的定制不是非常容易,需要修改代码,相信Android后续版本会对鼠标的支持有改进。以上代码仅供参考,如有错误敬请指正。
本文转自:http://my.unix-center.net/~Simon_fu/?p=555
Android系统对鼠标的支持并不好,因为Android系统原本是为手机量身定做的,手机系统基本上是不需要鼠标的。但是随着Android系统移植到其他领域,对鼠标的支持也越来越有意义。现在Android已经支持鼠标了,但是有一个完善的过程。本文后面会介绍到Android对鼠标支持的一些不足。
原来我以为Android系统的光标会和Windows差不多,是一个图片资源呢。这样的话,我只需要替换掉这个图片就可以搞定了。找了好久都没有找到图片资源的位置,最终反过来思考,Android系统鼠标光标非常简单,手动绘制也不是很难的事情。会不会是代码中绘制的呢?
沿着这个思路,终于在WindowManagerService.java中,找到了相关的代码:
frameworks/base/services/java/com/android/server/WindowManagerService.java
相关的代码位于performLayoutAndPlaceSurfacesLockedInner方法中:
mMouseSurface = new Surface(mFxSession, 0,-1,mMw,mMh, PixelFormat.TRANSPARENT, Surface.FX_SURFACE_NORMAL); mCanvas = mMouseSurface.lockCanvas(null); mCanvas.drawColor(0x0); mPath.moveTo(0.0f, 0.0f); mPath.lineTo(16.0f, 0.0f); mPath.lineTo(0.0f, 16.0f); mPath.close(); mCanvas.clipPath(mPath); mCanvas.drawColor(0x66666666); mMouseSurface.unlockCanvasAndPost(mCanvas); mMouseSurface.openTransaction(); mMouseSurface.setSize(mMw,mMh); mMouseSurface.closeTransaction();
可以看出默认情况下Android系统用颜色值0×66666666绘制了一个三角形,这个颜色值为32bit——A8R8G8R8,A表示透明度,0表示全部透明,0xff为不透明,0×66表示半透明。
你可以修改其中代码来修改鼠标光标的形状,需要学习一下Android绘图系统,熟悉Paint,Canvas等概念,不过挺简单的。下面是我的光标绘制的代码:
mMouseSurface = new Surface(mFxSession, 0,-1,mMw,mMh, PixelFormat.TRANSPARENT, Surface.FX_SURFACE_NORMAL); mCanvas = mMouseSurface.lockCanvas(null); mCanvas.drawColor(0x0); mPath.moveTo(0.0f, 0.0f); mPath.lineTo(0.0f, 19.0f); mPath.lineTo(14.0f, 14.0f); mPath.close(); mCanvas.clipPath(mPath); mCanvas.drawColor(0xFFFFFFFF); Paint paint = new Paint(); paint.setStyle(Paint.Style.STROKE); paint.setColor(0xFF000000); mCanvas.drawPath(mPath, paint); mMouseSurface.unlockCanvasAndPost(mCanvas); mMouseSurface.openTransaction(); mMouseSurface.setSize(mMw,mMh); mMouseSurface.closeTransaction();
绘制的光标为一个瘦一点儿的不透明的白色填充的三角形,然后用黑色给白色三角形描边。主要是模仿Windows的光标风格,对于各种颜色基调的主题这个光标都可以很清晰。
可以看出Android系统鼠标光标的定制不是非常容易,需要修改代码,相信Android后续版本会对鼠标的支持有改进。以上代码仅供参考,如有错误敬请指正。
本文转自:http://my.unix-center.net/~Simon_fu/?p=555
相关文章推荐
- 修改android系统设备信息
- 何在Android系统上修改系统默认的字体大小
- Android framework系统默认设置修改
- Android替换/修改系统默认输入法
- Android修改 EditText 中的光标位置
- Android中默认系统的声音/大小修改和配置详解
- android调节屏幕亮度(包括只修改应用程序和修改系统)
- Android 系统默认参数的修改
- 关于Android系统的光标和软键盘(持续更新中)
- Android 修改系统默认时间为24小时格式
- 如何修改应用兼容Android 3.0系统
- android4.0.4 系统默认值的修改
- Android 系统开机logo的修改【转】
- Android系统默认输入法的修改为搜狗输入法
- android系统内置数据库SQLite的建库、建表、添加、删除、修改、查询等基本操作
- Android 系统第三方应用系统修改权限及在应用上层显示权限默认打开
- Android杂谈--修改Android系统内/system目录权限使其可读写
- Android修改系统时间(应用程序获得系统权限)
- RK3128平台android系统修改添加遥控器键值码值
- Android中如何修改系统时间(应用程序获得系统权限)