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

2015-05-12 14:34

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

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

Android TV 鼠标空鼠焦点体验改善_第1张图片

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

Android TV 鼠标空鼠焦点体验改善_第2张图片

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

Android TV 鼠标空鼠焦点体验改善_第3张图片

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

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

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

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

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

[java]  view plain copy
  1. if (isHoverable()) {  
  2.     switch (action) {  
  3.     case MotionEvent.ACTION_HOVER_ENTER:  
  4.         setHovered(true);  
  5.         Log.d(TAG, "case MotionEvent.ACTION_HOVER_ENTER");  
  6.         // add by duanliang to change focuse behavior of air mouse  
  7.         requestFocus();  
  8.         // duanliang modify end  
  9.         break;  
  10.     case MotionEvent.ACTION_HOVER_EXIT:  
  11.         setHovered(false);  
  12.         break;  
  13.     }  
  14. }  


 

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

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

你可能感兴趣的:(Java/Android)