android 动态波纹效果,Android 水波纹扩散效果

本文介绍了一个名为RippleImageView的自定义控件,它继承自RelativeLayout并实现了水波纹动效。控件包含三个波纹图片,通过AnimationSet进行动画管理,并可以根据属性设置显示间隔时间和图片大小。代码中还包含了获取XML属性的方法和初始化视图的步骤。
摘要由CSDN通过智能技术生成

拷贝自定义控件RippleImageView /**

* Description :

* Author : liujun

* Email : liujin2son@163.com

*/

public class RippleImageView extends RelativeLayout {

private static final int SHOW_SPACING_TIME=700;

private static final int MSG_WAVE2_ANIMATION = 1;

private static final int MSG_WAVE3_ANIMATION = 2;

private static final int IMAMGEVIEW_SIZE = 80;

/**三张波纹图片*/

private static final int SIZE =3 ;

/**动画默认循环播放时间*/

private int show_spacing_time=SHOW_SPACING_TIME;

/**初始化动画集*/

private AnimationSet [] mAnimationSet=new AnimationSet[SIZE];

/**水波纹图片*/

private ImageView [] imgs=new ImageView[SIZE];

/**背景图片*/

private ImageView img_bg;

/**水波纹和背景图片的大小*/

private float imageViewWidth=IMAMGEVIEW_SIZE;

private float imageViewHeigth=IMAMGEVIEW_SIZE;

private Handler mHandler = new Handler() {

@Override

public void handleMessage(Message msg) {

switch (msg.what) {

case MSG_WAVE2_ANIMATION:

imgs[MSG_WAVE2_ANIMATION].startAnimation(mAnimationSet[MSG_WAVE2_ANIMATION]);

break;

case MSG_WAVE3_ANIMATION:

imgs[MSG_WAVE2_ANIMATION].startAnimation(mAnimationSet[MSG_WAVE3_ANIMATION]);

break;

}

}

};

public RippleImageView(Context context) {

super(context);

initView(context);

}

public RippleImageView(Context context, AttributeSet attrs) {

super(context, attrs);

getAttributeSet(context,attrs);

initView(context);

}

/**

* 获取xml属性

* @param context

* @param attrs

*/

private void getAttributeSet(Context context, AttributeSet attrs) {

TypedArray typedArray = context.obtainStyledAttributes(attrs, R.styleable.custume_ripple_imageview);

show_spacing_time = typedArray.getInt(R.styleable.custume_ripple_imageview_show_spacing_time, SHOW_SPACING_TIME);

imageViewWidth = typedArray.getDimension(R.styleable.custume_ripple_imageview_imageViewWidth, IMAMGEVIEW_SIZE);

imageViewHeigth = typedArray.getDimension(R.styleable.custume_ripple_imageview_imageViewHeigth, IMAMGEVIEW_SIZE);

Log.d("TAG","show_spacing_time="+show_spacing_time+"mm imageViewWidth="+imageViewWidth+"px imageViewHeigth="+imageViewHeigth+"px");

typedArray.recycle();

}

private void initView(Context context) {

setLayout(context);

for (int i = 0; i

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值