您的位置:首页 > 其它

安卓系统机顶盒中如何自由移动程序的焦点(没测试过)

2013-11-17 22:46 225 查看

安卓系统机顶盒中如何自由移动程序的焦点(http://hi.baidu.com/perxiaozi/item/298d37c327a3995ebdef69c4

还记得自己当初做基于安卓系统的机顶盒程序的时候一直犯困于无法自己控制焦点的移动,

在这里小弟分享一下如何自由的移动界面中不同控件的焦点:

例如:我们要把Gridview中item控件的焦点通过遥控器移动到界面中的一个TextView上,让TextView控件高亮显示

第一步:我们要重写TextView控件

import android.content.Context;

import android.graphics.Canvas;

import android.graphics.Color;

import android.graphics.Rect;

import android.util.AttributeSet;

import android.util.Log;

import android.view.KeyEvent;

import android.widget.TextView;

public class DyneTextView extends TextView {

@Override

protected void onDraw(Canvas canvas) {

super.onDraw(canvas);

}

@Override

protected void onFocusChanged(boolean focused, int direction,

Rect previouslyFocusedRect) {

// TODO Auto-generated method stub

super.onFocusChanged(focused, direction, previouslyFocusedRect);

//此处为该控件获得焦点后高亮显示

if(focused)

{

setBackgroundColor(Color.rgb(255,138,0));

}else

{

//此处为去掉控件高亮显示

setBackgroundColor(0);

}

}

@Override

public boolean onKeyDown(int keyCode, KeyEvent event) {

Log.d("onkeydown", "onkeydown");

return super.onKeyDown(keyCode, event);

}

public DyneTextView(Context context) {

super(context);

}

public DyneTextView(Context context, AttributeSet attrs) {

super(context, attrs);

}

public DyneTextView(Context context, AttributeSet attrs, int defStyle) {

super(context, attrs, defStyle);

}

}

接下来就是在xml布局文件中使用该控件了,在使用的时候一定要设置:android:focusable="true"

注:据我观察如果不设置以上属性:ImageView、TextView这些控件只会获取焦点不会高亮显示。

好了,就这样,机顶盒上面的焦点我们就可以自由的控制了。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: