android电视盒子蓝牙遥控器app,Android TV 智能电视/盒子 APP 开发焦点控制 两种方法实例...

(注:下面代码即兴写的,大概就是这个意思 –^_^– )

& M7 Q. r' Y2 g# T, n

ImageButton.setOnFocusChangeListener(){ * e: K: G8 ^* `  J% _

public void onFocus(boolean Focus){ 7 l# _/ t& C6 Z

if( Focus ){

4 }! d$ F$ ]- P3 ~6 D# C

// ImageButton 2.1 获焦时, ImageButton 2.1 改变获取焦点背景, ImageButton 1.1也改变失去焦点背景 6 [/ @9 f5 p0 {# E) R& n

} else{

3 S) a! }  U" M

//  ImageButton 2.1 获焦时,  ImageButton 2.1 改变失去焦点背景 ,  ImageButton 3.1也改变获取焦点背景  % V; `/ e2 T4 [: C* F; Q  d+ i

}

7 j8 P7 J$ i( U, L+ f

6 ?+ m/ H0 p( y0 D6 |

}1 R- n$ n0 w6 |% W! a8 f/ {% r

}复制代码

9 H" X6 _' R4 J- }. i

还有就是当你当前焦点移动到ImageButton 3.1上时,你有时需要知道此时Layout1、Layout2上是哪个ImageButton 被选中,因此你还必须设置三个ImageButton 变量(标识选中哪个布局中的那个ImageButton 对象),和三个int变量(标识选中哪个布局中的第几个)。

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

对于进行上下左右的控制,此时就要在OnKeyDown事件中进行捕获处理了。由于事先已经知道是哪个Layout中的哪ImageButton被选中了,而此时你进行上下左右操作是在你被选中的View上进行操作的,因此在OnKeyDown中你只需先判断是哪个View被选中,然后根据按键事件来移动View(通过之前设置的int标识进行移动)(注:由于是即兴写的,可能部分代码有错误,这里只是描述这个意思,–^_^–)假设Layout1中被选中的ImageButton为mFirstImgBtn, 序号为mFirstIndx;

Layout3中被选中的ImageButton为mThirdImgBtn, 序号为mThirdIndx;

每个Layout里面的ImageButton均在一个数组中,3 `+ k: G1 l: ^( |) B

假设分别为:ImageButton mImgBtnArray1[], mImgBtnArray2[], mImgBtnArray3[]

当前被选中的view为   mSenondImgBtn# S" t/ q; e( U6 U

7 j9 h0 G8 _. F* A

public void OnKeyDown(int keyCode, KeyEvent event){5 _9 ~3 |! o* N* F/ }& H

" L; g5 K& g7 j/ k7 i  l4 h* P

if( event.KEYCODE_DROP_UP== keyCode ){  //如果按下的是上键

) A, o7 j* Z3 v% F, a

" H" ^- j' j' V# `

mImgBtnArray1[ThirdIndx ].requestFocus;

9 Q7 X# b2 f8 C, @7 ]* M

6 K& B' K. p9 t6 `

}

# I, o/ f) B  b& P4 i

( o$ _7 l7 y2 \) ?) P

if( event.KEYCODE_DROP_DOWN == keyCode ){  //如果按下的是下键( |$ W% l5 M- L" }. c4 T- }

4 ^$ t6 ~; `/ t5 r/ D/ G

mImgBtnArray3[ ThirdIndx ].requestFocus;

" O" x0 C; _! y4 F4 P- H! o

& V4 ^. ^4 _( d8 Q8 \  r5 h' h

}

0 p2 D. n8 {) N0 J7 v% B

4 V4 Z; |6 [4 P$ P9 G9 t- b3 l

if( event.KEYCODE_DROP_LEFT == keyCode ){  //如果按下的是左键' Z# T+ [! t: R- [* t$ E! S

! r. R6 ?0 n2 S- J1 ]

mImgBtnArray1[ ThirdIndx-1 ].requestFocus;: z2 z8 R# N" j2 B0 o( H# f+ q

, N( e" Q5 B, R$ P

}

$ U1 C( X+ ?4 Q. {; {

/ }  c3 [2 l2 u

if( event.KEYCODE_DROP_RIGHT == keyCode ){  //如果按下的是右键9 k$ h- p' O7 I8 A

. Q0 r0 D4 Q. p( }

mImgBtnArray1[ ThirdIndx+1 ].requestFocus; / ~' p. c8 _. a' k! P

5 i; i- B/ a( t$ D/ U

}

: O; f  ^- N9 ?% Q

( q7 j$ t( x8 y! \6 l0 z: {

}

! g6 y# Z4 z  o$ U5 ^+ L复制代码* ?8 L: x. M1 ]  G4 g

而具体的获焦事件处理则在每个View的 OnFocusChangeListener 事件中处理。

你可能感兴趣的:(android电视盒子蓝牙遥控器app,Android TV 智能电视/盒子 APP 开发焦点控制 两种方法实例...)