如何在android材质devise中实现以下animation?

在这里输入图像说明

想在android中实现这个animation。赞赏有帮助。

Solutions Collecting From Web of "如何在android材质devise中实现以下animation?"

我没有testing过,但应该可以工作。

将这个依赖添加到你的应用gradle文件中: compile 'com.github.ozodrukh:CircularReveal:1.1.1'

在活动开始时声明这些variables:

 LinearLayout mRevealView; boolean hidden = true; 

在你的onCreate方法中添加这个:

 mRevealView = (LinearLayout) findViewById(R.id.reveal_items); mRevealView.setVisibility(View.INVISIBLE); 

在FAB的onClick方法中,添加以下内容:

 int cx = (mRevealView.getLeft() + mRevealView.getRight()); int cy = mRevealView.getTop(); int radius = Math.max(mRevealView.getWidth(), mRevealView.getHeight()); //Below Android LOLIPOP Version if (Build.VERSION.SDK_INT < Build.VERSION_CODES.LOLLIPOP) { SupportAnimator animator = ViewAnimationUtils.createCircularReveal(mRevealView, cx, cy, 0, radius); animator.setInterpolator(new AccelerateDecelerateInterpolator()); animator.setDuration(700); SupportAnimator animator_reverse = animator.reverse(); if (hidden) { mRevealView.setVisibility(View.VISIBLE); animator.start(); hidden = false; } else { animator_reverse.addListener(new SupportAnimator.AnimatorListener() { @Override public void onAnimationStart() { } @Override public void onAnimationEnd() { mRevealView.setVisibility(View.INVISIBLE); hidden = true; } @Override public void onAnimationCancel() { } @Override public void onAnimationRepeat() { } }); animator_reverse.start(); } } // Android LOLIPOP And ABOVE Version else { if (hidden) { Animator anim = android.view.ViewAnimationUtils. createCircularReveal(mRevealView, cx, cy, 0, radius); mRevealView.setVisibility(View.VISIBLE); anim.start(); hidden = false; } else { Animator anim = android.view.ViewAnimationUtils. createCircularReveal(mRevealView, cx, cy, radius, 0); anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); mRevealView.setVisibility(View.INVISIBLE); hidden = true; } }); anim.start(); } } 

将此方法添加到您的活动中:

 private void hideRevealView() { if (mRevealView.getVisibility() == View.VISIBLE) { mRevealView.setVisibility(View.INVISIBLE); hidden = true; } } 

为揭示创build一个新的XML布局,称之为reveal_layout.xml并添加:

 <io.codetail.widget.RevealFrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:layout_marginTop="?attr/actionBarSize"> //You can include whatever layout you want here <include layout="@layout/layout_you_want_to_show" /> </io.codetail.widget.RevealFrameLayout> 

为了达到这个目的,你必须把这个添加到你的活动布局的最后:

 <FrameLayout android:layout_width="match_parent" android:layout_height="wrap_content"> <include layout="@layout/reveal_layout" /> </FrameLayout> 

希望这可以帮助。