Android:以编程方式涟漪背景

我目前正在创build一个Android应用程序,在那里有人可以input他们的名字,按下button,然后只是输出他们的名字给他们。

我希望用这个效果达到的一种效果是,在按下button之后,input和button将消失(完成这一点到目前为止),然后MainActivity的视图的背景颜色会产生一个波纹中心)用新的颜色,最终改变完整的背景颜色。

我将如何去做这个编程方式,因为我只能find教程添加涟漪button时推?

Solutions Collecting From Web of "Android:以编程方式涟漪背景"

编辑:

我通过制作一个小应用程序来testing

首先隐藏你想在这个animation中显示的视图。

该视图可以来自相同的布局,在xml中,其可见性应该是不可见的,以便animation将显示它。

如果要创build全屏animation,可以将视图的高度和宽度设置为与父级匹配

把你的原始和透明的观点都在框架布局

在我的情况下,我用这个:

<FrameLayout android:layout_width="match_parent" android:layout_height="match_parent"> <TextView android:text="Hello World!" android:layout_width="wrap_content" android:textSize="20sp" android:layout_height="wrap_content" /> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:orientation="vertical" android:layout_width="match_parent" android:layout_height="match_parent" android:background="@color/colorPrimaryDark" android:id="@+id/revealiew" android:visibility="invisible" > </FrameLayout> 

然后在你的活动button click或一些事件做到这一点:

  fab.setOnClickListener(new View.OnClickListener() { @TargetApi(Build.VERSION_CODES.LOLLIPOP) @Override public void onClick(View view) { // previously invisible view View myView = findViewById(R.id.revealview); // get the center for the clipping circle int cx = myView.getWidth() / 2; int cy = myView.getHeight() / 2; // get the final radius for the clipping circle int finalRadius = Math.max(myView.getWidth(), myView.getHeight()); // create the animator for this view (the start radius is zero) Animator anim = ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius); //Interpolator for giving effect to animation anim.setInterpolator(new AccelerateDecelerateInterpolator()); // Duration of the animation anim.setDuration(1000); // make the view visible and start the animation myView.setVisibility(View.VISIBLE); anim.start(); } }); } 

附上GIF供您参考

你可以在这里查看官方文档: http : //developer.android.com/training/material/animations.html

你所描述的是背景的揭示效果

从官方文档你可以find准备使用的例子:

1)以下是如何使用揭示效果揭示以前不可见的视图:

 // previously invisible view View myView = findViewById(R.id.my_view); // get the center for the clipping circle int cx = myView.getWidth() / 2; int cy = myView.getHeight() / 2; // get the final radius for the clipping circle int finalRadius = Math.max(myView.getWidth(), myView.getHeight()); // create the animator for this view (the start radius is zero) Animator anim = ViewAnimationUtils.createCircularReveal(myView, cx, cy, 0, finalRadius); // make the view visible and start the animation myView.setVisibility(View.VISIBLE); anim.start(); 

2)以下是如何使用揭示效果隐藏以前可见的视图:

 // previously visible view final View myView = findViewById(R.id.my_view); // get the center for the clipping circle int cx = myView.getWidth() / 2; int cy = myView.getHeight() / 2; // get the initial radius for the clipping circle int initialRadius = myView.getWidth(); // create the animation (the final radius is zero) Animator anim = ViewAnimationUtils.createCircularReveal(myView, cx, cy, initialRadius, 0); // make the view invisible when the animation is done anim.addListener(new AnimatorListenerAdapter() { @Override public void onAnimationEnd(Animator animation) { super.onAnimationEnd(animation); myView.setVisibility(View.INVISIBLE); } }); // start the animation anim.start(); 

在你的应用程序中,你可以使用彩色背景图层(开始时不可见),然后使用揭示效果。

检查这个网站,“Android涟漪背景”是一个图书馆做到这一点,分钟sdk是11(Android 3.0蜂窝)
https://android-arsenal.com/details/1/1107