項目想添加一個小功能,當用手點擊屏幕的出現一個圓,之後顏色慢慢變淡然後消失
public class TestViewActivity extends Activity {
public static int alpha = 255;
private boolean upFlag = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new SimpleView(this));
}
private class SimpleView extends ImageView{
int point_x;
int point_y;
int radius = 0;
public SimpleView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
@Override
public boolean onTouchEvent(MotionEvent event) {
point_x = (int) event.getX();//獲取點擊位置
point_y = (int) event.getY();
if (event.getAction() == MotionEvent.ACTION_UP) {
upFlag = true;
}
invalidate();
return true;
};
protected void onDraw(android.graphics.Canvas canvas) {
alpha -= 3;
canvas.drawColor(Color.BLUE); //設置背景色
Paint paint = new Paint();
paint.setColor(Color.WHITE); //設置畫筆顏色
paint.setAlpha(alpha); //設置透明度
paint.setStyle(Paint.Style.FILL);
paint.setAntiAlias(true);
if (upFlag) {
++radius;
if (radius > 26) {
upFlag = false;
radius = 0;
alpha = 255;
}
if (radius == 18) {
alpha = 100;
}
canvas.drawCircle(point_x, point_y, radius, paint); //畫圓
invalidate();
}
}
}
}
當檢測到擡起的時候調用onDraw方法。代碼中使用的是繼承了ImageView,在ImageView中實現onDraw方法,同時在ondraw中必要的位置調用invalidate去實現重畫,這樣就可以給人以動態的感覺了。圓的半徑、畫筆的顏色、透明度的改變都可以根據自己的感覺去調試。