Android TV listview及焦点处理

Android TV listview及焦点处理

Android TV上的listview ,因为没有touch事件,只能通过按键处理,因此,用到listview时需要特殊处理:

1.复杂的view需要获取焦点,需要设置:

setItemsCanFocus(true)

同时需要设置下能获取焦点view的属性:

android:focusable="true

这样子级view就可以获取获取焦点。

2.view中需要获取焦点需要高亮框效果,可以在view画外框:

package com.cn21.ecloud.tv.ui.widget; 

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Rect;
import android.graphics.drawable.Drawable;
import android.util.AttributeSet;
import android.widget.RelativeLayout; 

public class SelectedRelativeLayout extends RelativeLayout{
  private Drawable mFloatDrawable;
  private Rect mTempRect = new Rect(); 

  public SelectedRelativeLayout(Context context) {
    this(context, null, 0);
  } 

  public SelectedRelativeLayout(Context context, AttributeSet attrs) {
    this(context, attrs, 0);
  } 

  public SelectedRelativeLayout(Context context, AttributeSet attrs, int defStyleAttr) {
    super(context, attrs, defStyleAttr);
    mFloatDrawable = getResources().getDrawable(R.drawable.item_float_rectangle);
  } 

  @Override
  protected void dispatchDraw(Canvas canvas) {
    super.dispatchDraw(canvas);
    if (hasFocus()) {
      if (mFloatDrawable != null) {
        final int w = getMeasuredWidth();
        final int h = getMeasuredHeight();
        mFloatDrawable.getPadding(mTempRect);
        mFloatDrawable.setBounds(-mTempRect.left, -mTempRect.top,
            w + mTempRect.right, h + mTempRect.bottom);
        mFloatDrawable.draw(canvas);
      }
    }
  }
}

布局中直接使用这个view

感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!

(0)

相关推荐

  • Android ListView分页简单实现

    Android ListView分页简单实现 分页,开发应用中必不可少.那么,现在就来实现分页功能. 首先来想想实现它要有哪些步骤, 1, 实现的组件, 2.初始化第一页数据, 3,底部布局 , 4,加载数据的条件 5.获取下一页的数据. 有了思路,我们一步步来实现就行了.先来想想我们用什么组件实现,我们知道列表UI我们常用ListView或者RecyclerView,初始化数据,我们就在通过一个for循环来准备数据,底部布局我们直接使ProgressBar控件和一个TextView来显示就可以

  • Android ListView与ScrollView冲突的解决方法总结

    Android ListView与ScrollView冲突的解决方法总结 众所周知ListView与ScrollView都具有滚动能力,对于这样的View控件,当ScrollView与ListView相互嵌套会成为一种问题:  问题一:ScrollView与ListView嵌套导致ListView显示不全面  问题二:ScrollView不能正常滑动 解决方式一: ScrollView+LinearLayout+ListView可以换成ScrollView+LinearLayout+Linear

  • Android ListView滑动改变标题栏背景渐变效果

    先上ListView滑动改变标题栏背景渐变效果图,透明转变成不透明效果: 图1: 图2: 图3: 图4: 我用的是小米Note手机,状态栏高度是55px,后面会提到,这里先做个说明: 下面的内容包含了所有代码和一些测试数据: 代码: 代码很简单,也做了注释,这里就不废话了. 先来布局文件: activity的布局 activity_main_10 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/androi

  • Android控件ListView使用方法详解

    Android控件ListView使用方法介绍,具体如下 一.ListView的简单用法 首先新建一个ListViewTest项目,并让Android Studio自动创建好活动.然后修改activity_main.xml中的代码,如下: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/re

  • Android ListView列表控件的介绍和性能优化

    ListView列表控件 一.ListView显示数据的原理:mvc模式 m:mode 数据(用javabean规范封装) v:view ListView c:adapter 适配器,负责把数据展示到ListView上 二.ListView最常用适配器 BaseAdapter.SimpleAdapter.ArrayAdapter 三.ListView显示数据的步骤 1.创建ListView 2.自定义ListView的适配器继承BaseAdapter,重写baseAdapter的getCount

  • Android使用ListView实现滚轮的动画效果实例

    之前收到一个需求,需要把一个数据展示列表页面做成像滚轮那样的动画效果:中间最大然后向上下两端逐渐缩小.我想了想iOS那边自带滚轮组件,安卓得自己去实现,目前网上仿ios的滚轮组件的也有一些,但是感觉不适合我,我的要求没那么复杂,于是决定自己动手去实现一下. 动手前先分析一下应该怎么做,归根到底只是要实现缩放效果,由中间向两边变小,当一个item越接近中间就放大,越远离中间就缩小.那么可以通过先获取ListView的中点,然后获取当前可视的所有item跟ListView的中点的垂直距离计算出一个比

  • Android 实现ListView的点击变色的实例

    Android 实现ListView的点击变色的实例 我做了一个音乐播放器,其中用ListView显示歌曲列表,当我点击某一首歌时,希望这首歌所在的item的背景颜色改变,以突出显示所选择的歌曲. 首先我想到的是在ItemClickListener里面写,如下: private View formerView=null; private class ListViewClickListener implements OnItemClickListener{ @Override public voi

  • Android TV listview及焦点处理

    Android TV listview及焦点处理 Android TV上的listview ,因为没有touch事件,只能通过按键处理,因此,用到listview时需要特殊处理: 1.复杂的view需要获取焦点,需要设置: setItemsCanFocus(true) 同时需要设置下能获取焦点view的属性: android:focusable="true 这样子级view就可以获取获取焦点. 2.view中需要获取焦点需要高亮框效果,可以在view画外框: package com.cn21.e

  • android tv列表焦点记忆实现的方法

    在Android tv中的开发中,经常要跟焦点打交道,一个常见的需求是要有焦点记忆功能,焦点移动到列表中的某一项中,焦点移出去,在回来时焦点还要定位到原来的项目上,对于这种需求,常见的实现方式是列表用用listview或者recyclerview实现,维护一个变量去存储上次的焦点位置,并在焦点变动或者按键事件中去维护这个变量和使用这个变量来定位. 具体实现 比如说用recyclerview实现列表时,在每个itemview的按键事件中,根据按键的方向和当前view的位置,判断是否是向外移走焦点的

  • Android TV开发:使用RecycleView实现横向的Listview并响应点击事件的代码

    本文讲述了Android TV开发:使用RecycleView实现横向的Listview并响应点击事件的代码.分享给大家供大家参考,具体如下: 1.先贴出自己的效果图(可横向滚动,并响应item点击事件): 2.关于点击事件的实现细节 核心:使用接口回调 在adapter中自己定义了个接口,然后在onBindViewHolder中去为holder.itemView去设置相应的监听最后回调我们设置的监听. class HomeAdapter extends RecyclerView.Adapter

  • Android TV开发:实现3D仿Gallery效果的实例代码

    本文讲述了Android TV开发:实现3D仿Gallery效果的实例代码.分享给大家供大家参考,具体如下: 1.实现效果: 滚动翻页+ 页面点击+页码指示器+焦点控制 2.实现这个效果之前必须要了解 Android高级图片滚动控件实现3D版图片轮播器这篇文章,我是基于他的代码进行修改的,主要为了移植到电视上做了按键事件和焦点控制. 3.具体代码: public class Image3DSwitchView extends LinearLayout { private int currentP

  • Android中ListView下拉刷新的实现方法实例分析

    本文实例讲述了Android中ListView下拉刷新的实现方法.分享给大家供大家参考,具体如下: ListView中的下拉刷新是非常常见的,也是经常使用的,看到有很多同学想要,那我就整理一下,供大家参考.那我就不解释,直接上代码了. 这里需要自己重写一下ListView,重写代码如下: package net.loonggg.listview; import java.util.Date; import android.content.Context; import android.util.

  • Android中ListView下拉刷新的实现代码

    Android中ListView下拉刷新 实现效果图: ListView中的下拉刷新是非常常见的,也是经常使用的,看到有很多同学想要,那我就整理一下,供大家参考.那我就不解释,直接上代码了. 这里需要自己重写一下ListView,重写代码如下: package net.loonggg.listview; import java.util.Date; import android.content.Context; import android.util.AttributeSet; import a

  • Android基于ListView实现类似QQ空间的滚动翻页与滚动加载效果

    本文实例讲述了Android基于ListView实现类似QQ空间的滚动翻页与滚动加载效果.分享给大家供大家参考,具体如下: 1. 滚动加载 listView.setOnScrollListener(new OnScrollListener() { //添加滚动条滚到最底部,加载余下的元素 @Override public void onScrollStateChanged(AbsListView view, int scrollState) { if (scrollState == OnScro

  • Android使用ListView批量删除item的方法

    本文实例讲述了Android使用ListView批量删除item的方法.分享给大家供大家参考,具体如下: 利用CheckBox选中一个或多个item,最后批量删除它们. 程序运行效果图如下:   下面开始上码: (代码已更正,已解决滚动时紊乱的问题) package com.test.adapter; import java.util.ArrayList; import java.util.HashMap; import java.util.List; import java.util.Map;

  • android为ListView每个Item上面的按钮添加事件

    本文介绍了ListView给每个Item上面的按钮添加事件,具体如下: 1.先看下效果图: 在这里仅供测试,我把数据都写死了,根据需要可以自己进行修改,此外实现ListView上面每个Item上的Button的事件有两种方法: 1.使用final变量扩展局部变量的生命周期范围主要代码(本文最后附全部代码): //注意原本getView方法中的int position变量是非final的,现在改为final @Override public View getView(final int posit

  • 详解Android中ListView实现图文并列并且自定义分割线(完善仿微信APP)

    昨天的(今天凌晨)的博文<Android中Fragment和ViewPager那点事儿>中,我们通过使用Fragment和ViewPager模仿实现了微信的布局框架.今天我们来通过使用ListView实现其中联系人一栏的基本视图,效果如下: 要实现上图的效果,我们要用到两个知识点: 1.这里我们使用自定义适配实现图文列表(当然也可以用SimpleAdapter) 通过继承BaseAdapter(抽象类)自定义适配器可以实现更灵活更复杂的列表. 自定义适配器ListView的优化: (1)使用固

随机推荐