我目前正在创建一个Android应用,有人可以输入他们的名字,按一个按钮,然后只需将他们的名字输回给他们。
我想用此实现的一个效果是,在按下按钮后,输入和按钮将消失(到目前为止完成此位),然后MainActivity视图的背景颜色将执行用新颜色涟漪(从中心),最终改变整个背景颜色。
我将如何以编程方式执行此操作,因为我只能在推送时找到有关向按钮添加涟漪的教程?
答案 0 :(得分:6)
您所描述的是背景上的reveal effect。
从官方文档中,您可以找到准备好使用的示例:
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();
在你的应用程序中,你可以使用彩色背景图层(在开头看不见),然后在其上使用显示效果。
答案 1 :(得分:6)
修改强>
我通过制作一个小应用程序来测试这个
首先隐藏您要在此动画中显示的视图。
视图可以来自相同的布局,在xml中,其可见性应为不可见,以便动画显示。
如果要创建全屏动画,可以将视图高度和宽度设置为匹配父 ...
在框架布局
中拍摄原始视图并显示视图就我而言,我用过这个:
<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();
}
});
}
您可以在此处详细了解官方文档: http://developer.android.com/training/material/animations.html
答案 2 :(得分:-1)
查看此网站,“Android Ripple Background”是一个库,而min sdk是11(Android 3.0 Honeycomb)
https://android-arsenal.com/details/1/1107