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

& 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 开发焦点控制 两种方法实例...相关推荐

  1. Android TV 智能电视/盒子 APP 开发焦点控制 两种方法实例

    感谢分享 http://www.7po.com/thread-564068-1-1.html 第一种方法: 采用Android自带的直接控制焦点上下左右的方法.这种方法的前提是必须知道每个view的i ...

  2. Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法)

    Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法) 目录 Unity Android 之 应用打开手机的指定网 ...

  3. oppo手机android系统进程,OPPO手机应用软件怎么在后台运行?OPPO软件后台运行两种方法...

    明明按了Home键让APP在后台运行,结果再进来时,却回不了原先的界面,相当于重新启动了APP!相信不少小伙伴都遇到过这种情况,对于杀怪杀到一半的孩纸,更是痛彻心扉-- 要解决问题很简单,这里有两种方 ...

  4. android资源透明背景,@谷歌android帝 这是你想要的,全局透明背景教程,两种方法...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先大家提取原生态没有任何修改过的framework-res.apk,反编译,(这里特别交代一下,大家要看仔细了,全局背景化透明化的修改是有两种修改的方法 ...

  5. android透明视频教程,@谷歌android帝 这是你想要的,全局透明背景教程,两种方法...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先大家提取原生态没有任何修改过的framework-res.apk,反编译,(这里特别交代一下,大家要看仔细了,全局背景化透明化的修改是有两种修改的方法 ...

  6. android 全透明背景,@谷歌android帝 这是你想要的,全局透明背景教程,两种方法...

    该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先大家提取原生态没有任何修改过的framework-res.apk,反编译,(这里特别交代一下,大家要看仔细了,全局背景化透明化的修改是有两种修改的方法 ...

  7. linux yum下载不安装,【APP】yum只下载软件不安装的两种方法

    今天来说下在centos下下载软件,不安装的方法: 方法一:通过yum自带一个工具:yumdownloader [root@web1 ~]#  rpm -qa |grep yum-utils [roo ...

  8. Android系统适配蓝牙遥控器键值Hi3798MV100

    最近有个项目机顶盒要适配蓝牙遥控器,我们原来的盒子是红外的遥控器. 从某宝买回来几款通用的遥控器,最简单的一款用cat /proc/bus/input/devices 命令查看name是BESCO K ...

  9. android 热更新 方案,热更新-热更新app开发的两种系统方案!

    针对app开发工作人员来讲,除开要会编码,热更新也是一定要学好和把握的方法,从技术性视角而言,热更新对Android和iOS各自有不一样的系统软件方案,为了更好地让大伙儿掌握这二种系统方案的差别,今日 ...

  10. android开发 实现动态获得app的cpu占有率并导出文件的两种方法。

    android开发 实现动态获得app的cpu占有率并导出文件的两种方法. 最近在做学校实验室的项目的时候,师兄要求我对app的性能进行评估,主要是从电量.cpu占有率.python模型的响应时间三者 ...

最新文章

  1. yarn集群启动时,并不自动启动resoucemanager的原因
  2. ng-controller and ng-model的工作原理
  3. laravel 模板继承_Laravel框架模板之公共模板、继承、包含实现方法分析
  4. Object Pools 喷泉效果实现
  5. 如何处理JavaScript中的事件处理(示例和全部)
  6. 工作291:当前账号是否绑定操作
  7. .NET简谈插件系统开发模式
  8. 实验8:Problem A: 立体空间中的点(I)
  9. Python-判断变量类型和继承链-type isinstance
  10. Python设计模式:适配器模式
  11. Java——事故应急
  12. Elaine的oi之路
  13. 网络服务器主机和普通家用电脑主机的区别在哪里?
  14. 怎么把PDF文件转换成Word文档格式?这种方法最简单
  15. 原生js实现表单的正则验证,所有验证都通过后提交按钮才可用
  16. 关于yd ui 移动端自适应的方案
  17. Spring捕获AOP抛出的异常
  18. 26.Nginx详解
  19. python django安装使用 错误:Type ‘manage.py help <subcommand>‘ for help on a specific subcommand.
  20. C语言头文件的包含顺序

热门文章

  1. Windbg分析蓝屏Dump文件
  2. 微信订阅号改版,我有这些看法
  3. 使用频谱仪测试信号抗干扰实验
  4. 学计算机的逻辑学博士,逻辑学博士点
  5. cdr添加节点快捷键_史上最全CDR快捷键命令汇总
  6. 基于周志华西瓜数据集的决策树算法及准确率测试
  7. 魅族一直显示无服务器,魅族手机用久了卡顿,这三个方法轻松解决
  8. 数据地图在商业数据分析中的5种应用
  9. 基于SSM+MySQL+Vue前后端分离的在线问卷调查系统
  10. 世界人工智能大会-杨强演讲内容ppt