Android中怎么利用MainUpView实现飞框选中效果

发布时间:2021-07-12 14:02:43 作者:Leah
来源:亿速云 阅读:195

这期内容当中小编将会给大家带来有关Android中怎么利用MainUpView实现飞框选中效果,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

    1.首先可以在我们的页面根布局下添加这一控件

<com.open.androidtvwidget.view.MainUpView
        android:id="@+id/mainUpView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:tag="upView"
        bind:effect_bridge="@{viewmodel.bridge}"
        bind:rect_padding="@{viewmodel.rectPadding}"
        bind:up_rect_drawable="@{viewmodel.rectDrawable}" />

</RelativeLayout>

     这里并不需要调整布局,因为飞框一般情况下我们设定为不可见的。在这里绑定了三个属性,一个是effect_bridge,一个是rect_padding,一个是up_rect_drawable.我们可以看一下这三个属性的定义。在ViewModel中我们添加如下三个成员(对于databinding的具体内容不在这里细述):

@Bindable
public int rectDrawable = R.drawable.white_light_10;

@Bindable
public EffectNoDrawBridge bridge = new EffectNoDrawBridge();

@Bindable
public Rect rectPadding = new Rect(0, 10, 0, 10);

    effect_bridge是飞框对象,我们控制飞框的聚焦跟移动都是操作这一个对象,rect_padding是飞框的内边距,可以调整这个Rect对象的大小,来调整飞框离内部四个边缘的距离,我们可以根据实际的状态适当调整,而rectDrawable则是具体的飞框样式,这里推荐使用9-Patch格式的图片,这样飞框在缩放的时候不容易变形。

    实际需要我们操作的是mainupview本身以及对应的bridge对象。

MainUpView mainUpView = (MainUpView) mainView.findViewById(R.id.mainUpView);
OpenEffectBridge bridge = (OpenEffectBridge) mainUpView.getEffectBridge();

    在首页中,我们可以获取mainupview对象,并通过getEffectBridge()方法获取对应的bridge。

    mainUpView.setFocusView(newFocus, scale);
    mainUpView.setFocusView(newFocus, oldFocus, scale);

    利用这两个函数,我们可以使mainUpView捕获当前获得焦点的View对象,飞框也随之移动并显示。传入的scale参数是飞框捕获view后的放大系数,用于实现放大的效果。

    当然了,当屏幕上view的布局不均匀的时候,飞框效果可能比较突兀,因为可以看到一个白色的框在屏幕上闪过,如果屏幕两个控件之间的空隙较大,效果并不美观。我们可以设置飞框的动画监听,让飞框在移到目的控件后才显示。

bridge.setOnAnimatorListener(new OpenEffectBridge.NewAnimatorListener() {
                        @Override
                        public void onAnimationStart(OpenEffectBridge bridge, View view, 
                                                                    Animator animation) {
                            bridge.setVisibleWidget(true);
                        }

                        @Override
                        public void onAnimationEnd(OpenEffectBridge bridge, View view,
                                                                 Animator animation) {
                            if (mSaveBridge == bridge && view.hasFocus())
                                bridge.setVisibleWidget(false);
                        }
                    });

    在这里,setVisibleWidget方法控制bridge是否显示,传入为true的时候隐藏。我们的操作是在动画开始的时候隐藏bridge,动画结束后再重新显示。

上述就是小编为大家分享的Android中怎么利用MainUpView实现飞框选中效果了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

推荐阅读:
  1. Android中怎么利用GridView实现多选效果
  2. Android如何实现仿简书搜索框效果

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

android

上一篇:怎么在.NET中使用MySQL数据库

下一篇:如何解决Tensorboard可视化出现错误:不显示数据 No scalar data was found的问题

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》