学习网址:
1.高仿哔哩哔哩客户端的SearchView https://mp.weixin.qq.com/s/X7l4aVY0Y_yfmec5rF4HCQ
2.使用CircularReveal动画效果切换页面 - CSDN博客 http://blog.csdn.net/caroline_wendy/article/details/50756717
1.实现的功能:
1.点击“搜索”按钮,搜索视图以半圆动画展开,并显示输入法;点击“取消”,搜索视图以半圆动画关闭,并隐藏输入法;
2.点击“广告”圆形按钮,跳转广告页面,圆形按钮有Activity之间的关联动画,图片以圆形动画显示;点击“返回”(此处为Android图标),图片以圆形动画消失,“广告”按钮运动回原先的位置;
2.效果图:
3.核心代码
先判断是否是Android5.0以上,是才执行动画,不是则直接显示视图。
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
final Animator animator = ViewAnimationUtils.createCircularReveal(
layoutSearch, layoutSearch.getWidth() - 56, 23, 0,
(float) Math.hypot(layoutSearch.getWidth(), layoutSearch.getHeight())
);
animator.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
layoutSearch.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationEnd(Animator animator) {
isOpenSearch = true;
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
animator.setDuration(300);
animator.start();
} else {
layoutSearch.setVisibility(View.VISIBLE);
isOpenSearch = true;
}
或者
int cx = (layoutContainer.getLeft() + layoutContainer.getRight()) / 2;
int cy = (layoutContainer.getTop() + layoutContainer.getBottom()) / 2;
int initialRadius = layoutContainer.getWidth();
float finalRadius = btnAds.getWidth() / 2;
Animator anim = ViewAnimationUtils.createCircularReveal(layoutContainer, cx, cy, initialRadius, finalRadius);
anim.setDuration(300);
anim.setInterpolator(new AccelerateDecelerateInterpolator());
anim.addListener(new AnimatorListenerAdapter() {
@Override
public void onAnimationStart(Animator animation) {
super.onAnimationStart(animation);
}
@Override
public void onAnimationEnd(Animator animation) {
super.onAnimationEnd(animation);
layoutContent.setVisibility(View.GONE);
}
});
anim.start();