Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android自定義控件(特效一) 點擊屏幕,根據所點擊的位置繪制圓環

Android自定義控件(特效一) 點擊屏幕,根據所點擊的位置繪制圓環

編輯:關於Android編程

之前在三星手機上看到點擊屏幕後出現水波的特效,所以嘗試著寫了個類似的效果

\

 

實現自定義一個View,並實現構造方法

public class MyView extends View {

public MyView(Context context) {
super(context);
// TODO Auto-generated constructor stub
}

public MyView(Context context, AttributeSet attrs) {
super(context, attrs);
// TODO Auto-generated constructor stub
}
}

如果要繪制圓環,則需要設置圓環的半徑、描邊寬度(如果弄填充滿的則不需要)、X和Y的坐標,因為點擊屏幕出現圓環後還需要消失,所以還要加上透明度

那麼我們新建一個Bean,去實現這些

public class MyBean {

int alpha; // 透明度
int X; // X坐標
int Y; // Y坐標
float width; // 描邊寬度
float radius; // 半徑
Paint paint; // 畫筆

}

 

接下來就是獲取點擊屏幕後的事件,思路很明確,點擊屏幕後,首先設置繪制的圓的半徑為0,透明度為最大值255,描邊寬度這裡按個人喜好隨意設置

@Override
public boolean onTouchEvent(MotionEvent event) {
super.onTouchEvent(event);

switch (event.getAction()) {
case MotionEvent.ACTION_DOWN:
// 點擊屏幕後 半徑設為0,alpha設置為255
MyBean bean = new MyBean();
bean.radius = 0; // 點擊後 半徑先設為0
bean.alpha = MaxAlpha; // alpha設為最大值 255
bean.width = bean.radius / 8; // 描邊寬度 這個隨意
bean.X = (int) event.getX(); // 所繪制的圓的X坐標
bean.Y = (int) event.getY(); // 所繪制的圓的Y坐標
bean.paint = initPaint(bean.alpha, bean.width);

break;
}
return true;
}

設置完屬性後,交給handler去繪制界面,每過X毫秒後,繪制的圓的半徑+N,透明度-M

bean.radius += 5;// 半徑每次+5
bean.alpha -= 10;// 透明度每次減10
if (bean.alpha < 0) {
// 透明度小雨0的時候 賦為0
bean.alpha = 0;
}
bean.width = bean.radius / 8; // 描邊寬度設置為半徑的1/4
bean.paint.setAlpha(bean.alpha);
bean.paint.setStrokeWidth(bean.width);

至此,我們所有的主要代碼已實現

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved