第一种方法:采用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标识进行移动)(注:由于是即兴写的,可能部分代码有错误,这里只是描述这个意思,--^_^--)

假设Layout1中被选中的ImageButton为mFirstImgBtn, 序号为mFirstIndx;

Layout2中被选中的ImageButton为mSenondImgBtn, 序号为mSenondIndx;

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

每个Layout里面的ImageButton均在一个数组中,假设分别为:ImageButton mImgBtnArray1[],  mImgBtnArray2[],    mImgBtnArray3[],

当前被选中的view为   mSenondImgBtn

public void OnKeyDown(int keyCode, KeyEvent event){

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

mImgBtnArray1[ThirdIndx ].requestFocus;

}

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

mImgBtnArray3[ ThirdIndx ].requestFocus;

}

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

mImgBtnArray1[ ThirdIndx-1 ].requestFocus;

}

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

mImgBtnArray1[ ThirdIndx+1 ].requestFocus;

}

}

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

android 焦点移动,Android TV 焦点上下左右移动相关推荐

  1. android点击灰色背景图片,android button按键失去焦点和点击后改变背景图片

    android button按键得到焦点和点击后改变背景图片 我也接受android不久,今天来给同学们分享一下button得到焦点和点击后改变背景图片,其实很简单就是两个事件setOnFocusCh ...

  2. 【Android】android TV开发

    google翻译[https://www.jianshu.com/p/c216849986ed] Ⅰ.开始使用电视应用 为了使您的应用在电视设备上获得成功,您必须设计出可以在10英尺远的地方轻松理解的 ...

  3. android汽车音频焦点方案,管理音频焦点  |  Android 开发者  |  Android Developers

    两个或两个以上的 Android 应用可同时向同一输出流播放音频.系统会将所有音频流混合在一起.虽然这是一项出色的技术,但却会给用户带来很大的困扰.为了避免所有音乐应用同时播放,Android 引入了 ...

  4. 【Android】不依赖焦点和选中的TextView跑马灯

    前言 继承TextView,并仿照源码修改而来,主要是取消了焦点和选中了判断,也不依赖文本的宽度. 声明 欢迎转载,但请保留文章原始出处:) 博客园:http://www.cnblogs.com 农民 ...

  5. hd live tv android,HD Live TV

    Watch HD LIVE TV HD free on your Phone and Tablet from across the world. "HD Live TV" is u ...

  6. android webview 失去焦点,Android的webview失去焦点

    情况:我有一个web输入字段在其中输入一个位置,有一个webview坐在它下面显示建议.该输入字段上有一个keyup处理程序和一个onchange处理程序.在keyup上有一条消息发出来调用api来填 ...

  7. android 视频预览,预览视频  |  Android 开发者  |  Android Developers

    如需鼓励用户访问您的 TV 应用中的深层链接,预览视频是一种不错的方法. 预览内容可以是简短的视频剪辑,也可以是完整的电影预告片. 在创建预览时,请注意以下准则: 不要在预览中显示广告.如果您在客户端 ...

  8. kodi remote android,使用Android和iOS在Win10系统中设置Kodi Remote方法

    Kodi是一个流行的流媒体应用程序,兼容windows操作系统和大多数其他设备,如Android,iOS,Linux等.Kodi是家庭娱乐的理想选择,基本上设计用于大屏幕.如果要在windows桌面上 ...

  9. 【Android】Android开源项目分类汇总

    第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...

  10. Android开发——Android手机屏幕适配方案总结

    0. 前言 Android的屏幕适配,即使得某一元素在Android不同尺寸.不同分辨率的手机上具备相同的显示效果,这个问题一直以来都是我们Android开发者不得不面对的问题.本文参考了很多前人的博 ...

最新文章

  1. C++ Windows进程管理
  2. matlab实现移动平均
  3. 华为新系统鸿蒙升级平板名单,华为鸿蒙系统升级名单正式确认!全面替换安卓:流畅度比肩iOS...
  4. 01 java 编程基础
  5. 学长毕业日记 :本科毕业论文写成博士论文的神操作
  6. Python标准库07 信号 (signal包,部分os包)
  7. 自定义DrawableTextView——实现TextView左上右下的点击监听
  8. 怎么在MyEclipse中快速配置spring框架-非web项目
  9. jQuery formValidator表单验证插件4.1.0 下载 演示 文档 可换肤 代码生成器
  10. 你真的了解用户吗?-浅谈《用户画像》的意义和方法
  11. 熟悉 ASP.NET MVC 类
  12. Vue「二」—— vue 基本使用 、vue 指令 、vue 过滤器
  13. 怎么编写java_程序员学编程第一步:手把手教你开发第一个Java程序
  14. 【Hadoop代码笔记】Hadoop作业提交之客户端作业提交
  15. Vscode ROS 环境搭建
  16. Hibernate映射组件属性(一)
  17. 什么是NVMe驱动器,您应该购买一个吗?
  18. 如何简单使用阿里巴巴矢量图标库!?
  19. 向日葵远程控制软件linux版安装
  20. 企业选择WMS仓库管理系统免费版是否更好

热门文章

  1. 虚拟机您的计算机无法启动,一键解决win10虚拟机无法启动的问题
  2. 第一次有人把小米9快充讲的这么简单明了qc3.0 usb pd
  3. PyTorch基础(六)-- optim模块
  4. 腾讯服务器微信分身,腾讯禁止微信双开应用,为什么还有那么多人“冒死”双开微信呢?...
  5. AHT20温湿度传感器数据采集
  6. 树莓派摄像头远程拍照及传输
  7. gitlab 屏蔽注册功能
  8. mysql安装出现change_mysql-5.msi安装出现change,repaire,or remove installation
  9. 计算机类绘图的文献,基于计算机CAD绘图探讨论文
  10. Java 批量下载图片并压缩为Zip