Android ︰ 指定圆揭示 animation 起始位置?

标签: Java Android
发布时间: 2017/3/19 18:07:30
注意事项: 本文中文内容可能为机器翻译,如要查看英文原文请点击上面连接.

我公司目前有圆形的揭示 animation ,开始从最右边的工具栏。我想最初的圆心开始从"搜索"图标,这让我觉得苦苦寻找答案。我试着改变 cxxy 值和 am 不成功。任何帮助被赞赏。

final Toolbar search_bar = (Toolbar) findViewById(R.id.search_toolbar);

                if (android.os.Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                    int cx = search_bar.getWidth();
                    int cy = search_bar.getHeight()/2;

                    float finalRadius = (float) Math.hypot(cx, cy);

                    Animator anim =
                            ViewAnimationUtils.createCircularReveal(search_bar, cx, cy, 0, finalRadius);

                    search_bar.setVisibility(View.VISIBLE);
                    anim.start();
                }

enter image description here

解决方法 1:

试试这个︰

public void startCircularReveal() {
    final View view = findViewById(R.id.linearLayout);
    final View startView = findViewById(R.id.button_container);
    int cx = (startView.getLeft() + startView.getRight()) / 2;
    int cy = (startView.getTop() + startView.getBottom()) / 2;
    view.setBackgroundColor(Color.parseColor("#6FA6FF"));
    int finalRadius = Math.max(cy , view.getHeight() - cy);
    Animator anim = ViewAnimationUtils.createCircularReveal(view, cx, cy, 0, finalRadius);
    anim.addListener(new Animator.AnimatorListener() {
        @Override
        public void onAnimationStart(Animator animation) {

        }

        @Override
        public void onAnimationEnd(Animator animation) {

        }

        @Override
        public void onAnimationCancel(Animator animation) {

        }

        @Override
        public void onAnimationRepeat(Animator animation) {

        }
    });
    anim.setDuration(200);
    view.setVisibility(View.VISIBLE);
    anim.start();
}

改变 viewview ,你想要做显露在它的上面 (通常根 view ),和 startView 为您的"搜索"图标 view ,和 onAnimationEnd 做任何你想做后揭示完毕。

更新

如果披露是不上你的看法,是一个小的技巧来解决它的添加这 view 的底部你layout

            <LinearLayout
                android:id="@+id/linearLayout"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:background="@color/custom_theme_color"
                android:orientation="vertical"
                android:visibility="invisible">
            </LinearLayout>

请确保 view "视图"设置为 id,layout

final View view = findViewById(R.id.linearLayout);

基本上我的所作所为添加 LinearLayout 并设置其宽度和高度,以适应 match_parent,所以这 view 上的一切,这是 view 解释,揭示会在那里的顶上,并确保 vieweffectlayout 我设置 visibility 到无形,并将它设置为可见右初揭示︰

view.setVisibility(View.VISIBLE);

我希望它能帮助。

官方微信
官方QQ群
31647020