自定义View主题切换动画(仿酷安客户端)

本文详细介绍了如何在Android中实现自定义View的主题切换动画,通过创建`RippleAnimation`类,利用构造方法、`create`静态方法、`updateMaxRadius`计算最大半径、`start`方法启动动画,以及`onDraw`方法绘制动画效果。文章还提到了获取View在屏幕中绝对坐标的辅助方法,并强调了在学习过程中坚持的重要性。
摘要由CSDN通过智能技术生成

private RippleAnimation(Context context, float startX, float startY, int radius) {

super(context);

//获取activity的根视图,用来添加本View

mRootView = (ViewGroup) ((Activity) getContext()).getWindow().getDecorView();

mStartX = startX;

mStartY = startY;

mStartRadius = radius;

mPaint = new Paint();

mPaint.setAntiAlias(true);

//设置为擦除模式

mPaint.setXfermode(new PorterDuffXfermode(PorterDuff.Mode.CLEAR));

updateMaxRadius();

initListener();

}

既然构造方法被私有了,那么我们就要公开一个静态的create方法:

public static RippleAnimation create(View onClickView) {

Context context = onClickView.getContext();

int newWidth = onClickView.getWidth() / 2;

int newHeight = onClickView.getHeight() / 2;

//计算起点位置

float startX = getAbsoluteX(onClickView) + newWidth;

float startY = getAbsoluteY(onClickView) + newHeight;

//起始半径

//因为我们要避免遮挡按钮

int radius = Math.max(newWidth, newHeight);

return new RippleAnimation(context, startX, startY, radius);

}

我们来看看获取圆形半径的代码怎么写:

/**

* 根据起始点将屏幕分成4个小矩形,mMaxRadius就是取它们中最大的矩形的对角线长度

* 这样的话, 无论起始点在屏幕中的哪一个位置上, 我们绘制的圆形总是能覆盖屏幕

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值