android自定义鼠标指针,修改Android系统的鼠标光标
如果你的Android设备支持鼠标,你将会发现默认的光标为灰色半透明的三角形,系统的默认主题是黑色的,造成很难发现鼠标的位置。所以本文介绍怎样定制Android系统的鼠标光标。
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后续版本会对鼠标的支持有改进。以上代码仅供参考,如有错误敬请指正。
android自定义鼠标指针,修改Android系统的鼠标光标相关推荐
- Android自定义软键盘输入法,隐藏系统输入法显示光标的实现
android实现自定义软键盘,先上图看效果,效果基本上是仿ios输入法实现的 这里是实现隐藏系统输入法,同时让EditText能获取光标的代码部分(通过反射调用): <span style=& ...
- php更换鼠标指针详细,window_Win7系统鼠标指针怎么更改?Win7系统更换鼠标指针的方法, Win7系统鼠标指针怎么更改 - phpStudy...
Win7系统鼠标指针怎么更改?Win7系统更换鼠标指针的方法 Win7系统鼠标指针怎么更改?相信有很多电脑用户使用鼠标时都是用默认的鼠标指针,也从来没有想过要去更换鼠标指针,但其实,鼠标指针是可以更换 ...
- Android Studio(五):修改Android Studio项目包名
Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...
- android代码图片编辑,怎样修改android系统apk软件里面的代码和图片?
你好,你的问题我算是看明白了,从你的问题可以设计三个方面,apk反编译.apk回编译以及apk签名,看来,我得从头说起了. 首先,我在这里提供下反编译Android所需的软件,当然是全套,刚刚收集整理 ...
- Android 自定义AlertDialog,调用方法与系统一致
2019独角兽企业重金招聘Python工程师标准>>> 由于android原生的AlertDialog都一致,有时为了和你的项目的Dialog保持一致,你最先想到的就是有没有Aler ...
- android背景颜色动态修改,Android自定义TextView带圆角及背景颜色(动态改变圆角背景颜色)...
最近根据项目需求自定义了一个TextView控件,主要用来做状态的标识,比如一个订单状态有各种,当然了这种设置在Android中可以直接用xml文件来处理,但是对于xml文件太过于麻烦,针对不同的颜色 ...
- android 自定义数字软键盘,Android自定义键盘的实现(数字键盘和字母键盘)
在项目中,产品对于输入方式会有特殊的要求,需要对输入方式增加特定的限制,这就需要采用自定义键盘.本文主要讲述数字键盘和字母键盘的自定义实现. 自定义键盘的实现步骤如下: 自定义CustomKeyboa ...
- android自定义曲线控件,Android自定义view进阶-- 神奇的贝塞尔曲线
上一篇介绍了自定义view需要知道的基本函数.新开一篇献给借给我vpn的深圳_奋斗小哥. 转载请注明出处:http://blog.csdn.net/wingichoy/article/details/ ...
- Android自定义文件路径箭头,Android自定义ViewGroup实现带箭头的圆角矩形菜单
本文和大家一起做一个带箭头的圆角矩形菜单,大概长下面这个样子: 要求顶上的箭头要对准菜单锚点,菜单项按压反色,菜单背景色和按压色可配置. 最简单的做法就是让UX给个三角形的图片往上一贴,但是转念一想这 ...
- android自定义view生命周期,android基础之自定义view
一.Custom View 1.view的继承关系 view继承关系.png 2.Android 如何绘制试图层次 当activity获取焦点时,它必须提供layout层次的根节点,然后android ...
最新文章
- 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)
- 智能家居正是扎根好时节 蓄积且待春雨
- iOS进阶之架构设计MVC(1)
- 给数组里面的对象添加一个新的数据
- Laravel数据库迁移和填充(支持中文)
- docker build -t_在Docker环境构建、打包和运行Spring Boot应用
- UI组件-UITabbarController
- leetcode -- 36.有效的数独
- 数据预处理—5.box-cox变换及python实现
- java中word转pdf实现
- gms认证流程_Android P(9.0)GMS认证新要求
- Java生成圆角图标
- c语言编程中crol,单片机C语言“_crol_” 与“_cror_”的用法
- 百度联合哈尔滨发布城市大模型“冰城-百度·文心”, 助力城市智能化建设
- 阿里云OSS对象存储搭建网盘教程
- 湖北武汉劳务员证书劳务人员实名制的难点分析建筑七大员培训
- 外网如何访问内网/局域网网站【内网穿透】
- 使用highcharts做地图统计
- Linux如何让程序在后台运行
- html七彩文本,小程序解析富文本---文本内容(不含图片)