Android 智能电视开发 焦点问题

第一种方法:

采用Android自带的直接控制焦点上下左右的方法。这种方法的前提是必须知道每个view的id,因此在进行布局时有必须要通过view.setId(…)指定view的特定ID,然后通过view.setNextLeftView(…)等四个方法控制该view的上下左右移动后所到达的view。

第二种方法:

在一些比较复杂的Layout中,特别是涉及到在View的焦点变化的过程中还要控制view的背景以及字体颜色变化等。

比如:在有多个Layout(假设有Layout1, Layout2, Layout3,每个Layout中都有若干个ImageButton),

当你从Layout1中的某个ImageButton 1.1中移动Layout2中ImageButton 2.1,此时ImageButton 1.1要标识为被选中,但是失去焦点,此时ImageButton 2.1是选中并且获取焦点,再从ImageButton

2.1移到ImageButton 3.1的过程中也是这种情况。

对于这样一种情况,你必须对每个ImageButton 设置焦点捕获实际(setOnFocusChangeListener),在该监听事件中处理,

ImageButton.setOnFocusChangeListener(){

public void onFocus(boolean Focus){

if( Focus ){

// ImageButton 2.1 获焦时, ImageButton 2.1 改变获取焦点背景, ImageButton 1.1也改变失去焦点背景/

} else{

//  ImageButton 2.1 获焦时,  ImageButton 2.1 改变失去焦点背景 ,  ImageButton 3.1也改变获取焦点背景

}

}

}

还有就是当你当前焦点移动到ImageButton 3.1上时,你有时需要知道此时Layout1、Layout2上是哪个ImageButton

被选中,因此你还必须设置三个ImageButton 变量(标识选中哪个布局中的那个ImageButton

对象),和三个int变量(标识选中哪个布局中的第几个)。

通过这些标识,你就可以很方便的了解到那个聚焦和哪个失去焦点了。

对于进行上下左右的控制,此时就要在OnKeyDown事件中进行捕获处理了。由于事先已经知道是哪个Layout中的哪ImageButton被选中了,而此时你进行上下左右操作是在你被选中的View上进行操作的,因此在OnKeyDown中你只需先判断是哪个View被选中,然后根据按键事件来移动View(通过之前设置的int标识进行移动)

你可能感兴趣的:(Android 智能电视开发 焦点问题)