点击按钮时隐藏Android应用中的鼠标光标是否可行?
当然能解决这个问题!我给你几个靠谱的方案,帮你在Android应用里把那个烦人的鼠标光标藏起来:
方案1:给单个View隐藏光标
如果只是想在视频播放界面或者特定控件上隐藏光标,直接调用对应View的setCursor()方法就行,两种方式可选:
- 传入
null让光标直接消失:
// 比如你的视频播放容器或者根布局 videoContainer.setCursor(null);
- 用全透明的Drawable作为光标(需要你提前准备一张全透明的png放到drawable目录):
videoContainer.setCursor(getResources().getDrawable(R.drawable.transparent_cursor));
方案2:全局隐藏整个应用的光标
要是希望整个应用里都看不到鼠标光标,就在Activity的onCreate或者onResume方法里给窗口设置:
// 获取窗口的根布局,设置光标为null getWindow().getDecorView().setCursor(null);
或者通过WindowManager的属性配置:
Window window = getWindow(); WindowManager.LayoutParams params = window.getAttributes(); params.cursor = null; window.setAttributes(params);
方案3:结合外接鼠标事件拦截处理
因为你是改装了鼠标按钮来触发视频,还可以通过监听鼠标输入事件,在按钮按下的同时隐藏光标,顺便处理你的视频启动逻辑:
@Override public boolean onGenericMotionEvent(MotionEvent event) { // 判断是否是鼠标输入事件 if (event.getSource() == InputDevice.SOURCE_MOUSE) { // 立刻隐藏光标 getWindow().getDecorView().setCursor(null); // 处理鼠标左键按下的逻辑 if (event.getAction() == MotionEvent.ACTION_BUTTON_PRESS) { // 启动你的视频播放 startYourVideo(); } return true; // 消费这个事件,不让系统继续处理 } return super.onGenericMotionEvent(event); }
小提醒
- 测试时注意Android版本,一般4.0以上的系统都支持这些方法;
- 如果之后需要恢复光标,调用
setCursor(Cursor.getDefaultCursor())就能还原系统默认光标; - 用透明光标资源的话,记得适配不同分辨率的设备,避免出现异常。
内容的提问来源于stack exchange,提问作者Twing90




