Android TV 鼠标空鼠焦点体验改善

当前,公司的AndroidTV实现的空鼠效果体验非常不好,都是"直到点击某个视图控件,焦点才切换到那个控件上",比如:

1.鼠标光标在A上时,A取得焦点:

2.鼠标移到B时,仍然是A取得焦点:

3.单击鼠标左键时,焦点才从A转到B

更好的空鼠效果是空鼠箭头飘在哪个控件上,哪个控件就获得焦点,即上面第二步,当鼠标移到控件B的时候,就要将焦点切换到B,而不是等到点击B了才切换

在PC端一般对鼠标的焦点效果都是这样处理的,这样更符合用户鼠标操作的习惯。

因为Android的视图控件类都是继承自框架层,所以要想达到操作系统级别的统一效果,就要在系统的框架层基类中进行修改,实现上述效果的方法是在:

frameworks/base/core/java/android/view.java

在View.onHoverEvent(MotionEvent event)函数中为鼠标进出控件事件添加获取焦点的动作:

		if (isHoverable()) {
			switch (action) {
			case MotionEvent.ACTION_HOVER_ENTER:
				setHovered(true);
				Log.d(TAG, "case MotionEvent.ACTION_HOVER_ENTER");
				// add by duanliang to change focuse behavior of air mouse
				requestFocus();
				// duanliang modify end
				break;
			case MotionEvent.ACTION_HOVER_EXIT:
				setHovered(false);
				break;
			}
		}


 

添加上述代码后mm 编译出framework.jar ext.jar替换到TV即可。

实际操作,体验还是很不错的,尤其对焦点事件做了UI动画特效的时候。

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值