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 开发焦点控制 两种方法实例...相关推荐
- Android TV 智能电视/盒子 APP 开发焦点控制 两种方法实例
感谢分享 http://www.7po.com/thread-564068-1-1.html 第一种方法: 采用Android自带的直接控制焦点上下左右的方法.这种方法的前提是必须知道每个view的i ...
- Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法)
Unity Android 之 应用打开手机的指定网页浏览器(external browser)的两种方法(封装aar和不用封装aar方法) 目录 Unity Android 之 应用打开手机的指定网 ...
- oppo手机android系统进程,OPPO手机应用软件怎么在后台运行?OPPO软件后台运行两种方法...
明明按了Home键让APP在后台运行,结果再进来时,却回不了原先的界面,相当于重新启动了APP!相信不少小伙伴都遇到过这种情况,对于杀怪杀到一半的孩纸,更是痛彻心扉-- 要解决问题很简单,这里有两种方 ...
- android资源透明背景,@谷歌android帝 这是你想要的,全局透明背景教程,两种方法...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先大家提取原生态没有任何修改过的framework-res.apk,反编译,(这里特别交代一下,大家要看仔细了,全局背景化透明化的修改是有两种修改的方法 ...
- android透明视频教程,@谷歌android帝 这是你想要的,全局透明背景教程,两种方法...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先大家提取原生态没有任何修改过的framework-res.apk,反编译,(这里特别交代一下,大家要看仔细了,全局背景化透明化的修改是有两种修改的方法 ...
- android 全透明背景,@谷歌android帝 这是你想要的,全局透明背景教程,两种方法...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 首先大家提取原生态没有任何修改过的framework-res.apk,反编译,(这里特别交代一下,大家要看仔细了,全局背景化透明化的修改是有两种修改的方法 ...
- linux yum下载不安装,【APP】yum只下载软件不安装的两种方法
今天来说下在centos下下载软件,不安装的方法: 方法一:通过yum自带一个工具:yumdownloader [root@web1 ~]# rpm -qa |grep yum-utils [roo ...
- Android系统适配蓝牙遥控器键值Hi3798MV100
最近有个项目机顶盒要适配蓝牙遥控器,我们原来的盒子是红外的遥控器. 从某宝买回来几款通用的遥控器,最简单的一款用cat /proc/bus/input/devices 命令查看name是BESCO K ...
- android 热更新 方案,热更新-热更新app开发的两种系统方案!
针对app开发工作人员来讲,除开要会编码,热更新也是一定要学好和把握的方法,从技术性视角而言,热更新对Android和iOS各自有不一样的系统软件方案,为了更好地让大伙儿掌握这二种系统方案的差别,今日 ...
- android开发 实现动态获得app的cpu占有率并导出文件的两种方法。
android开发 实现动态获得app的cpu占有率并导出文件的两种方法. 最近在做学校实验室的项目的时候,师兄要求我对app的性能进行评估,主要是从电量.cpu占有率.python模型的响应时间三者 ...
最新文章
- yarn集群启动时,并不自动启动resoucemanager的原因
- ng-controller and ng-model的工作原理
- laravel 模板继承_Laravel框架模板之公共模板、继承、包含实现方法分析
- Object Pools 喷泉效果实现
- 如何处理JavaScript中的事件处理(示例和全部)
- 工作291:当前账号是否绑定操作
- .NET简谈插件系统开发模式
- 实验8:Problem A: 立体空间中的点(I)
- Python-判断变量类型和继承链-type isinstance
- Python设计模式:适配器模式
- Java——事故应急
- Elaine的oi之路
- 网络服务器主机和普通家用电脑主机的区别在哪里?
- 怎么把PDF文件转换成Word文档格式?这种方法最简单
- 原生js实现表单的正则验证,所有验证都通过后提交按钮才可用
- 关于yd ui 移动端自适应的方案
- Spring捕获AOP抛出的异常
- 26.Nginx详解
- python django安装使用 错误:Type ‘manage.py help <subcommand>‘ for help on a specific subcommand.
- C语言头文件的包含顺序