美文网首页
Android TV 焦点选中放大动画

Android TV 焦点选中放大动画

作者: 橙果子 | 来源:发表于2020-11-06 14:25 被阅读0次

github源码地址 https://github.com/xiangfenr/TVAmplification

放大效果如图

一.新建TV项目,或者别的项目添加TV识别也行

 <!--AndroidManifest.xml 中标记为电视应用 -->
    <uses-feature
        android:name="android.hardware.type.television"
        android:required="true"></uses-feature>

    <uses-feature
        android:name="android.hardware.touchscreen"
        android:required="false" />
    <uses-feature
        android:name="android.software.leanback"
        android:required="true" />

二.添加drawable 焦点选中样式

<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <!--是否取得焦点,比如用户选择了一个文本框。-->
    <item android:drawable="@mipmap/imgchecked" android:state_focused="true" />
    <item android:drawable="@mipmap/imgdefault" android:state_focused="false" />
</selector>

三. xml样式设置

 <ImageView
            android:id="@+id/imageBtn1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginLeft="20dp"
            android:layout_marginTop="30dp"
            android:focusable="true"
            android:src="@drawable/banner1_clicked"
            android:tag="imageBtn1" />

四. java代码编写,添加Focus焦点监听,利用ImageView的 setScaleX,setScaleY设置放大

也可以自己编写一个属性动画

  imageView.setOnFocusChangeListener((view, b) -> {
                Log.e("xf", "initEvent: " + view.getTag().toString() + " focus = " + b);
                if (b) {
                    view.setScaleX(1.4f);
                    view.setScaleY(1.4f);
                    imageView.bringToFront(); //此属性是将view添加到最上层
                } else {
                    view.setScaleX(1.0f);
                    view.setScaleY(1.0f);
                }
            });

相关文章

网友评论

      本文标题:Android TV 焦点选中放大动画

      本文链接:https://www.haomeiwen.com/subject/zsktbktx.html