import java.util.ArrayList;
import java.util.List;


import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.view.View;


/**
 * 
 * @ClassName: SeismicWaveView
 * @Description: TODO(地震波效果)

 */
public class SeismicWaveView extends View {


private Paint paint;
private int maxWidth = 255;
private boolean isStarting = false;
private List alphaList = new ArrayList();
private List startWidthList = new ArrayList();


public SeismicWaveView(Context context) {
super(context);
init();
}


public SeismicWaveView(Context context, AttributeSet attrs) {
super(context, attrs);
init();
}


public SeismicWaveView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
init();
}


private void init() {
paint = new Paint();
paint.setColor(Color.RED);// 此处颜色可以改为自己喜欢的
alphaList.add("255");// 圆心的不透明度
startWidthList.add("0");
}


@Override
public void onDraw(Canvas canvas) {
super.onDraw(canvas);
setBackgroundColor(Color.TRANSPARENT);// 颜色:完全透明
// 依次绘制 同心圆
for (int i = 0; i < alphaList.size(); i++) {
int alpha = Integer.parseInt(alphaList.get(i));
int startWidth = Integer.parseInt(startWidthList.get(i));
paint.setAlpha(alpha);
canvas.drawCircle(getWidth() / 2, getHeight() / 2, startWidth,
paint);
// 同心圆扩散
if (isStarting && alpha > 0 && startWidth < maxWidth) {
alphaList.set(i, (alpha - 1) + "");
startWidthList.set(i, (startWidth + 1) + "");
}
}
if (isStarting
&& Integer
.parseInt(startWidthList.get(startWidthList.size() - 1)) == maxWidth / 5) {
alphaList.add("255");
startWidthList.add("0");
}
// 同心圆数量达到6个,删除最外层圆
if (isStarting && startWidthList.size() == 6) {
startWidthList.remove(0);
alphaList.remove(0);
}
// 刷新界面
invalidate();
}


// 地震波开始/继续进行
public void start() {
isStarting = true;
}


// 地震波暂停
public void stop() {
isStarting = false;
}


public boolean isStarting() {
return isStarting;
}


}

更多相关文章

  1. android设置按钮背景透明度与设置布局背景图片的透明度
  2. android 自定义对话框 背景透明
  3. android设置Activity背景色为透明的2种方法
  4. a64_7.1android平板关于更改绘制矩形界面透明度
  5. android设置背景色为透明
  6. android设置背景色为透明
  7. android设置背景色为透明
  8. android设置背景色为透明
  9. Android设置任何控件透明度

随机推荐

  1. 好的网子
  2. android NDK JNI设置自己的log输出函数
  3. Android之在Bitmap上涂鸦效果
  4. 相对布局 RelativeLayout 常用属性介绍
  5. android修改进程名
  6. android 流量统计
  7. Android安装和卸载程序
  8. selector
  9. Android程序怎么做单元测试
  10. 制作登录界面的布局时候,可以使用 android