如何在Android中实现此动画?

时间:2018-12-19 06:23:27

标签: android android-animation android-alertdialog

Anim

我正在尝试实现此动画。因此,我实现了Recyclerview。 在recyclerview项目上,单击“我正在打开全屏对话框”。我试图从YoYo动画库中实现动画,但是它的效果不尽如人意。这是我的全屏对话代码:

private void showDialog() {

        View dialogView = LayoutInflater.from(context).inflate(R.layout.work_rv_details_dialog_layout, null);
        Dialog dialog = new Dialog(context, android.R.style.Theme_Light);
        dialog.requestWindowFeature(Window.FEATURE_NO_TITLE);
        dialog.setContentView(dialogView);

        YoYo.with(Techniques.FadeInUp)
                .duration(1500)
                .playOn(dialogView);

        dialog.show();

    }

有帮助吗? 谢谢...

1 个答案:

答案 0 :(得分:0)

首先,您要从“第一活动”共享到“第二活动”的所有视图,都应在视图android:transitionName="logo"中添加此属性

例如第一个活动中的ImageView

<ImageView
        android:id="@+id/imgLogo"
        android:transitionName="logo"
        android:src="@drawable/logo"
        android:layout_centerInParent="true"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:layout_width="400dp"
        android:layout_height="150dp" />

像这样开始第二个活动

 final ImageView imgLogo = (ImageView) findViewById(R.id.imgLogo);

            Intent intent = new Intent(SplashScreen.this,Login.class);
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
                ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(SplashScreen.this, imgLogo, "logo");
                startActivity(intent, options.toBundle());
            }else {
                startActivity(intent);
            }

然后在第二个活动中再次为各个视图指定相同的transitionName

<ImageView
        android:id="@+id/imgLogo"
        android:transitionName="logo"
        android:src="@drawable/logo"
        android:adjustViewBounds="true"
        android:scaleType="fitXY"
        android:layout_width="200dp"
        android:layout_height="100dp" />

就是这样!