如果你的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系统的鼠标光标相关推荐

  1. Android自定义软键盘输入法,隐藏系统输入法显示光标的实现

    android实现自定义软键盘,先上图看效果,效果基本上是仿ios输入法实现的 这里是实现隐藏系统输入法,同时让EditText能获取光标的代码部分(通过反射调用): <span style=& ...

  2. php更换鼠标指针详细,window_Win7系统鼠标指针怎么更改?Win7系统更换鼠标指针的方法,  Win7系统鼠标指针怎么更改 - phpStudy...

    Win7系统鼠标指针怎么更改?Win7系统更换鼠标指针的方法 Win7系统鼠标指针怎么更改?相信有很多电脑用户使用鼠标时都是用默认的鼠标指针,也从来没有想过要去更换鼠标指针,但其实,鼠标指针是可以更换 ...

  3. Android Studio(五):修改Android Studio项目包名

    Android Studio相关博客: Android Studio(一):介绍.安装.配置 Android Studio(二):快捷键设置.插件安装 Android Studio(三):设置Andr ...

  4. android代码图片编辑,怎样修改android系统apk软件里面的代码和图片?

    你好,你的问题我算是看明白了,从你的问题可以设计三个方面,apk反编译.apk回编译以及apk签名,看来,我得从头说起了. 首先,我在这里提供下反编译Android所需的软件,当然是全套,刚刚收集整理 ...

  5. Android 自定义AlertDialog,调用方法与系统一致

    2019独角兽企业重金招聘Python工程师标准>>> 由于android原生的AlertDialog都一致,有时为了和你的项目的Dialog保持一致,你最先想到的就是有没有Aler ...

  6. android背景颜色动态修改,Android自定义TextView带圆角及背景颜色(动态改变圆角背景颜色)...

    最近根据项目需求自定义了一个TextView控件,主要用来做状态的标识,比如一个订单状态有各种,当然了这种设置在Android中可以直接用xml文件来处理,但是对于xml文件太过于麻烦,针对不同的颜色 ...

  7. android 自定义数字软键盘,Android自定义键盘的实现(数字键盘和字母键盘)

    在项目中,产品对于输入方式会有特殊的要求,需要对输入方式增加特定的限制,这就需要采用自定义键盘.本文主要讲述数字键盘和字母键盘的自定义实现. 自定义键盘的实现步骤如下: 自定义CustomKeyboa ...

  8. android自定义曲线控件,Android自定义view进阶-- 神奇的贝塞尔曲线

    上一篇介绍了自定义view需要知道的基本函数.新开一篇献给借给我vpn的深圳_奋斗小哥. 转载请注明出处:http://blog.csdn.net/wingichoy/article/details/ ...

  9. Android自定义文件路径箭头,Android自定义ViewGroup实现带箭头的圆角矩形菜单

    本文和大家一起做一个带箭头的圆角矩形菜单,大概长下面这个样子: 要求顶上的箭头要对准菜单锚点,菜单项按压反色,菜单背景色和按压色可配置. 最简单的做法就是让UX给个三角形的图片往上一贴,但是转念一想这 ...

  10. android自定义view生命周期,android基础之自定义view

    一.Custom View 1.view的继承关系 view继承关系.png 2.Android 如何绘制试图层次 当activity获取焦点时,它必须提供layout层次的根节点,然后android ...

最新文章

  1. 数据结构(03)— 数据处理基本操作(数据的查找、新增、删除、修改)
  2. 智能家居正是扎根好时节 蓄积且待春雨
  3. iOS进阶之架构设计MVC(1)
  4. 给数组里面的对象添加一个新的数据
  5. Laravel数据库迁移和填充(支持中文)
  6. docker build -t_在Docker环境构建、打包和运行Spring Boot应用
  7. UI组件-UITabbarController
  8. leetcode -- 36.有效的数独
  9. 数据预处理—5.box-cox变换及python实现
  10. java中word转pdf实现
  11. gms认证流程_Android P(9.0)GMS认证新要求
  12. Java生成圆角图标
  13. c语言编程中crol,单片机C语言“_crol_” 与“_cror_”的用法
  14. 百度联合哈尔滨发布城市大模型“冰城-百度·文心”, 助力城市智能化建设
  15. 阿里云OSS对象存储搭建网盘教程
  16. 湖北武汉劳务员证书劳务人员实名制的难点分析建筑七大员培训
  17. 外网如何访问内网/局域网网站【内网穿透】
  18. 使用highcharts做地图统计
  19. Linux如何让程序在后台运行
  20. html七彩文本,小程序解析富文本---文本内容(不含图片)

热门文章

  1. 原创|批处理|Monkey自动测试工具批处理版
  2. Linux傲腾内存,Intel傲腾内存全面对比实测
  3. idea打包jar包后java运行jar命令提示jar中没有主清单属性的解决方案
  4. ubuntu版网易云音乐下载
  5. keil5 下载器配置
  6. html移动的导航菜单,移动导航菜单设计和教程
  7. Python实现m3u8下载mp4视频原理及源码
  8. 3DMAX下载、3dmax2014下载、3dmax2020下载亲测有效
  9. 电机控制初学入门资料_电机控制如何入门
  10. Python书单推荐