这里有新鲜出炉的精品教程,程序狗速度看过来!
Android是一种基于Linux的自由及开放源代码的操作系统,主要使用于移动设备,如智能手机和平板电脑,由Google公司和开放手机联盟领导及开发。尚未有统一中文名称,中国大陆地区较多人使用“安卓”或“安致”。
这篇文章主要介绍了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
来源: http://www.phperz.com/article/17/0819/337500.html