android 机顶盒 view 焦点,AndroidTV/机顶盒 ListView获取焦点与点击事件问题处理方案...
AndroidTV/機頂盒 ListView獲取焦點與點擊事件問題處理方案
本人大二,最近在寫一個Android機頂盒的小項目,遇到了這樣一個問題。由于App的布局復雜,導致ListView用遙控器獲取其Item焦點時變得很卡很慢。需要不斷點擊上下鍵才能移動焦點??戳讼翷ogcat,發現焦點每移到最后一個時,總是”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获取焦点与点击事件问题处理方案...的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: QT中DirectShowPlayerS
- 下一篇: Qt中全局变量的使用