android 机顶盒 view 焦点,AndroidTV/机顶盒 ListView获取焦点与点击事件问题处理方案...
AndroidTV/机顶盒 ListView获取焦点与点击事件问题处理方案
本人大二,最近在写一个Android机顶盒的小项目,遇到了这样一个问题。由于App的布局复杂,导致ListView用遥控器获取其Item焦点时变得很卡很慢。需要不断点击上下键才能移动焦点。看了下Logcat,发现焦点每移到最后一个时,总是”can’t find view with Id 1/2/3/4”,试了网上无数种解决方案还是不行。
后来发现,自己为每个Item.setFocusable(true)的绑定方式是有问题的,会导致android系统在ListView里面遍历view的速度很慢。因为当我把Item.setFocusable(true)给注释掉时,ListView非常流畅
最后的解决方案是,直接在Listview做一个全局的绑定来解决问题。
ListViewItem绑定问题解决方案
ListView 配置如下
bg_button_focused.xml
ListView获取Item的焦点问题
当ListView全局绑定焦点后,又有一个问题来了,当你按到遥控器上的确认键时,不会有点击效果。
之前的配置文件如下
即使pressed设置为true还是没有作用,因此我是自己实现了一个选中效果,具体代码如下:
classifyListView.setOnItemClickListener(new OnItemClickListener() {
@Override
public void onItemClick(AdapterView> parent, View view,
int position, long id) {
if (position != clickPosition) {
clickPosition = position;
}
adapter.notifyDataSetChanged();
}
});
@Override
public View getView(final int position, View convertView,
ViewGroup parent) {
LayoutInflater inflater = LayoutInflater.from(STBMainActivity.this);
convertView = inflater.inflate(R.layout.item_classify, null);
final TextView tv = ((TextView) convertView
.findViewById(R.id.tv_item_classify));
tv.setText(InfoConfig.info.class_list.get(position).name);
tv.setBackgroundResource(R.drawable.bg_button_focused);
if (position == clickPosition) {
tv.setBackgroundColor(STBMainActivity.this.getResources().getColor(R.color.purple));
}
return convertView;
}
实现起来非常简单。
希望这篇文章能帮助到大家,毕竟目前AndroidTV开发技术类的文章还是比较少的,请各位多多指正!
android 机顶盒 view 焦点,AndroidTV/机顶盒 ListView获取焦点与点击事件问题处理方案...相关推荐
- android列表项点击事件,Android 开发 tips(2):监听 Listview 列表项点击事件
Android 开发 tips(2):监听 Listview 列表项点击事件 (这篇和上篇本来是应该一起写的,但是太过冗长,附链接:[SimpleAdapter 在 Listview 中的应用] ht ...
- android 项目学习随笔十三(ListView实现ITEM点击事件,将已读状态持久化到本地)...
1.因为给LISTVIEW增加了两个头布局,所以在点击事件ITEM索引会增加2,比如原来第一条数据的索引应该为0,增加两个头布局后,它的索引变为 2,为了使LISTVIEW的ITEM在点 ...
- Android DataBinding 入门了解 到实现一个buttton的点击事件
为了更好的学习mvvm 这里从新学习databinding.... 1 首先在app下面的Gradle 里面的android 里面 添加 dataBinding {enabled = true} 如下 ...
- 安卓java浮层不响应点击事件,Android悬浮窗屏蔽悬浮窗外部所有的点击事件的实例代码...
Android可以在所有应用上方添加View,就是给WindowManager添加一个View,在创建的View的时候可以给这个View设置LayoutParams(android.view.Wind ...
- Android通过MotionEvent仿真手指在屏幕单次点击事件
Android通过MotionEvent仿真手指在屏幕单次点击事件 Android的View有一个方法performClick(),可人工模拟用户在手机屏幕上的点击事件,这次换一种方法,通过代码制造M ...
- Android获取view焦点方向,android 中获取当前焦点所在屏幕中的位置 view.getLocationOnScreen(location)...
final int[] location = new int[2]; view.getLocationOnScreen(location); final int[] location = new in ...
- android之View坐标系(view获取自身坐标的方法和点击事件中坐标的获取)
在做一个view背景特效的时候被坐标的各个获取方法搞晕了,几篇抄来抄去的博客也没弄很清楚. 现在把整个总结一下. 其实只要把下面这张图看明白就没问题了. 涉及到的方法一共有下面几个: view获取自身 ...
- ListView和条目点击事件、条目长按事件
step1:创建一个LinearLayout线性布局,属性值为vertical 里面写一个ListView列表控件 <ListViewandroid:id="@+id/listView ...
- listview 模仿用户点击事件。
正确的方法 gvFlow.post(new Runnable() {@Overridepublic void run() {gvFlow.performItemClick(gvFlow.getChil ...
最新文章
- numpy meshgrid用法
- 用servlet校验密码2
- 高地址和低地址、高字节低字节、大小端模式的转换,存储顺序
- 求矩阵中各列数字的和
- android切换线程的方法,android 主线程切换方法
- 耗纸古文风之四--登高
- 八卦图php怎么做,揭秘伏羲是如何画出神奇的八卦图的?
- 读懂LaTeX中cls文件
- 【新年快乐】2022年跨年钟声即将敲响,2021终将成为历史
- 快速学习OSG(2)——光照
- HTML5 Canvas 绘制加拿大枫叶旗
- 【笔记】SQL查询语句的基本使用方法
- windows10安装配置vim
- 云计算概念 IaaS PaaS SaaS
- C++ 魔兽世界之二:装备
- 直流马达驱动_ADC_PWM加减速(STM32F4 CubeMX)
- 三创赛历年优秀作品资料整理
- 获取已安装设备的高级信息
- 终身伴侣(两个人的网站)代码+效果演示(文末源码地址)
- php对接AliGenie天猫精灵服务器控制智能硬件esp8266③ 渗入熟悉AliGenie 对接协议,揭开第三方云平台是如何让天猫精灵是发送消息到私有服务器的!