Material Design动画 Reveal Effect | 揭示效果

核心方法

  ViewAnimationUtils.createCircularReveal(    View view,//视图将被剪辑到动画圈子    int centerX,//开始动画的起点x坐标(相对于目标view而言)    int centerY,//开始动画的起点y坐标(相对于目标view而言)    float startRadius,//动画圆的起始半径    float endRadius//动画圆的半径结束  );

效果图代码实现

1.布局

    "match_parent"        android:layout_height="match_parent"        android:orientation="vertical">        

2.逻辑代码

public class PlayRevealEffect extends MvvmBaseActivity<ActivityPlayRevealEffectBinding> implements View.OnClickListener {    private boolean isFirst = true;//是否是第一次点击    private Animator animator;    private int width;// 屏幕宽度(像素)    private int height;// 屏幕高度(像素)    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_play_reveal_effect);        GetPiexels();        bindingView.btnRevealeffect.setOnClickListener(this);    }    private void GetPiexels() {        DisplayMetrics metric = new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(metric);               width = metric.widthPixels;               height = metric.heightPixels;    }    @Override    public void onClick(View v) {                if (isFirst) {                    animator = ViewAnimationUtils.createCircularReveal(                            bindingView.viewRevealeffect,                            width / 2,                            height / 2,                            0,                            height                    );                    isFirst = false;                } else {                    animator = ViewAnimationUtils.createCircularReveal(                            bindingView.viewRevealeffect,                            0,                            0,                            height,                            0                    );                    isFirst = true;                }                animator.addListener(new Animator.AnimatorListener() {                    @Override                    public void onAnimationStart(Animator animation) {                        if (!isFirst) {                            bindingView.viewRevealeffect.setVisibility(View.VISIBLE);                        }                    }                    @Override                    public void onAnimationEnd(Animator animation) {                        if (isFirst) {                            bindingView.viewRevealeffect.setVisibility(View.INVISIBLE);                        }                    }                    @Override                    public void onAnimationCancel(Animator animation) {                    }                    @Override                    public void onAnimationRepeat(Animator animation) {                    }                });                animator.setDuration(500);                animator.start();    }}

完整代码点我下载GitHub

Thank you

  • 以上仅本人学习中遇到的问题,如有更多意见欢迎随时交流 issues
  • email:coderguoy@gmail.com

更多相关文章

  1. Android自定义action与permission
  2. Android(安卓)IPC之ContentProvider和Socket(Android开发艺术探索
  3. Android(安卓)在webview中设置代理
  4. android webview用法小结2 java与javascript的交互
  5. Android中的工厂模式(减少if-else和switch-case)
  6. [置顶] 100多个Android(安卓)Demo的整合
  7. android屏幕页面实现滚动,页面跳转
  8. Android(安卓)仿微信朋友圈发动态功能(相册图片多选)
  9. android加载gif图片的动画库

随机推荐

  1. Android的Window类
  2. Android系统信息和安全机制
  3. Android(安卓)Socket 发送广播包的那些坑
  4. 「Android」Android的消息机制
  5. Android的一点思考
  6. 讲给Android程序员看的前端教程(20)——f
  7. Android(安卓)电池管理系统
  8. android原生和H5交互(转)
  9. Android教程之一:Window下搭建Android开发
  10. Android(安卓)之 复习大纲