android Tv盒子开发 焦点

     不知不觉入坑做电视两年多了,终于有时间停下来写点什么,希望对大家用用。

     TV开发最大的特色是焦点和焦点动画。

      由于电视机输入方式是按键,因此焦点很重要。焦点相当于选中效过果,只有被选中后,那个view才能被点击。

      要想让一个view获取焦点,代码如下

  view.setFocusable(true);
  view.requestFocus();
  view的聚焦状态是可以监听的,
view.setOnFocusChangeListener(new View.OnFocusChangeListener() {
    @Override
    public void onFocusChange(View v, boolean hasFocus) {
        if(hasFocus){
            //v 获得焦点
        }else{
            //v 失去焦点 
        }
    }
});
一般焦点相关的效果都是这这个监听器里处理的,如当获取焦点时我让view变大,失去焦点的时候恢复正常大小。
   

 


     完整代码

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    >

    <TextView
        android:id="@+id/select1"
        android:layout_width="200px"
        android:layout_height="300px"
        android:background="#f00"
        android:layout_centerVertical="true"
        android:layout_marginLeft="200px"
        android:text="菜单一"
        android:textSize="70px"
        android:gravity="center"
        android:focusableInTouchMode="true"
        >
        
    </TextView>
    <TextView
        android:id="@+id/select2"
        android:layout_toRightOf="@+id/select1"
        android:layout_width="200px"
        android:layout_height="300px"
        android:background="#ff0"
        android:layout_centerVertical="true"
        android:layout_marginLeft="200px"
        android:text="菜单二"
        android:textSize="70px"
        android:gravity="center"
        >
      
    </TextView>
</RelativeLayout>

    

package com.example.administrator.myapplication;

import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    View view,view2;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        view=findViewById(R.id.select1);
        view.setFocusable(true);//设置改view可以获得焦点
        view.requestFocus();//让该view取得焦点
        view.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                TextView textView= (TextView) v;
                if(hasFocus){
                    //v 获得焦点
                    v.setScaleX(1.2f);
                    v.setScaleY(1.2f);
                    textView.setTextColor(Color.GREEN);
                }else{
                    //v 失去焦点 
                    v.setScaleX(1f);
                    v.setScaleY(1f);
                    textView.setTextColor(Color.BLACK);
                }
            }
        });
        view2=findViewById(R.id.select2);
        view2.setFocusable(true);
        view2.requestFocus();
        view2.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if(hasFocus){
                    //v 获得焦点
                    v.setScaleX(1.2f);
                    v.setScaleY(1.2f);
                }else{
                    //v 失去焦点 
                    v.setScaleX(1f);
                    v.setScaleY(1f);
                }
            }
        });
    }
}


  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值