Android TV 实现GridView获得焦点时放大

前言:最近有个需求要做一个管理类的页面,需要使用GridView,使用遥控器移动到相应的Item时,当前的Item就会放大,而可以替换背景

View 放大代码
自定义一个类写一下方法使用scalesX和scalesY即可

public static void scaleView(View view,boolean hasFocus){
        float scale=hasFocus?1.2f:1.0f;
        view.animate().scaleX(scale).scaleY(scale).setInterpolator(new AccelerateDecelerateInterpolator()).setDuration(200);
    }

    public static void scaleViewlast(View view,boolean hasFocus){
        float scale=hasFocus?1.0f:1.0f;
        view.animate().scaleX(scale).scaleY(scale).setInterpolator(new AccelerateDecelerateInterpolator()).setDuration(200);
    }

核心代码:
在创建适配器的时候,将每一个View保存下来,使用setOnFocusChangeListener监听焦点情况,获得焦点时,在适配器中定义一个View来保存第一个Item,当获得焦点时则将第一个Item放大,注意,不要让GridView一开始就获得焦点,不然你会发现一直报空指针,每次将当前的View保存到lastView,在移动到下一个时将上一个View放小,在将当前View放大即可

   grid.setOnFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                if (hasFocus){
                    if (firstView==null){
                        Log.i("测试", String.valueOf(adapter.returnView()));
                        firstView=adapter.returnView();
                        ViewUtils.scaleView(firstView,true);
                        lastView=firstView;
                    }else {
                        ViewUtils.scaleView(firstView,true);
                        lastView=firstView;
                    }
                    grid.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
                        @Override
                        public void onItemSelected(AdapterView<?> parent, View view, int position, long id) {
                            if (lastView!=null){
                                ViewUtils.scaleViewlast(lastView,true);
                            }
                            ViewUtils.scaleView(view,true);
                            lastView=view;
                        }
                        @Override
                        public void onNothingSelected(AdapterView<?> parent) {

                        }
                    });

                }else {
                    ViewUtils.scaleViewlast(lastView,true);
                }
            }
        });

初始状态
在这里插入图片描述

放大

在这里插入图片描述


完整Demo
https://download.csdn.net/download/qq_30926503/13061752
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值