水波紋效果---3環波紋,水波紋---3波紋

來源:互聯網
上載者:User

水波紋效果---3環波紋,水波紋---3波紋



import android.content.Context;import android.graphics.Bitmap;import android.graphics.Canvas;import android.graphics.Color;import android.graphics.Matrix;import android.graphics.Paint;import android.graphics.PorterDuff;import android.graphics.PorterDuffXfermode;import android.graphics.Bitmap.Config;import android.os.Handler;import android.os.Message;import android.util.DisplayMetrics;import android.util.Log;import android.view.View;import android.view.ViewGroup;import android.widget.ImageView;/** * 水波紋View * @author alan * */public class WaterView extends View{/** * 不透明度(完全透明:0) */private int radius1;private int radius2;private int radius3;private int alpha1;private int alpha2;private int alpha3;private Paint paint1;private Paint paint2;private Paint paint3;private int widthScreen;private int heightScreen;private Handler mHandler;/** * 圖片直徑 */private  static final int MIN = 50; public WaterView(Context context,Bitmap source) {super(context);init();//擷取螢幕的寬高DisplayMetrics dm = getResources().getDisplayMetrics();widthScreen = dm.widthPixels;heightScreen = dm.heightPixels;mHandler = new Handler(){@Overridepublic void handleMessage(Message msg) {super.handleMessage(msg);switch (msg.what) {case 0:flushState();WaterView.this.invalidate();if(alpha1 ==0 ||alpha2 ==0 ||alpha3 ==0){Log.i("TAG", "alpha1-->"+alpha1+"alpha2-->"+alpha2+"alpha3-->"+alpha3);mHandler.sendEmptyMessage(1);}else{mHandler.sendEmptyMessageDelayed(0, 50);}break;case 1:initSimple();WaterView.this.invalidate();mHandler.sendEmptyMessage(0);break;default:break;}}};mHandler.sendEmptyMessage(0);}@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// TODO Auto-generated method stubsuper.onMeasure(widthMeasureSpec, heightMeasureSpec);}@Overrideprotected void onDraw(Canvas canvas) {Log.i("TAG", "onDraw......");super.onDraw(canvas);//畫圓//c1(最小圓)canvas.drawCircle(widthScreen/2, this.getHeight()/2, radius1, paint1);//c2canvas.drawCircle(widthScreen/2, this.getHeight()/2, radius2, paint2);//c3canvas.drawCircle(widthScreen/2, this.getHeight()/2, radius3, paint3);}private void init() {alpha1 = 255;radius1 = MIN / 2;alpha2= 175;radius2 = MIN / 2 + 80;alpha3 = 95;radius3 = MIN / 2 + 160;initPaint();}private void initSimple(){if(alpha1 == 0 ){alpha1 = 255;radius1 = MIN / 2;paint1.setColor(Color.BLUE);}if(alpha2 == 0 ){alpha2 = 255;radius2 = MIN / 2;paint2.setColor(Color.BLUE);}if(alpha3 == 0 ){alpha3 = 255;radius3 = MIN / 2;paint3.setColor(Color.BLUE);}paint1.setAlpha(alpha1);paint2.setAlpha(alpha2);paint3.setAlpha(alpha3);}private void flushState() {radius1  +=5;alpha1  -=5;//控制速度,值越大,圓環擴大越快radius2  +=5;alpha2  -=5;radius3  +=5;alpha3  -=5;if(alpha1 <= 0){alpha1 = 0 ;}if (alpha2 <= 0) {alpha2 = 0;}if (alpha3 <= 0) {alpha3 = 0;}paint1.setAlpha(alpha1);paint2.setAlpha(alpha2);paint3.setAlpha(alpha3);}private void initPaint() {//建立一個畫筆paint1 = new Paint();paint1.setAntiAlias(true);//設定消除鋸齒paint1.setStrokeWidth((float) 1);//設定線寬1paint1.setStyle(Paint.Style.STROKE);//設定空心畫筆,環形方式繪製paint1.setAlpha(alpha1);paint1.setColor(Color.BLUE);//定義畫筆2paint2 = new Paint();paint2.setAntiAlias(true);//設定消除鋸齒paint2.setStrokeWidth((float) 1);//設定線寬1paint2.setStyle(Paint.Style.STROKE);//設定空心畫筆,環形方式繪製paint2.setAlpha(alpha2);//定義畫筆3paint3 = new Paint();paint3.setAntiAlias(true);//設定消除鋸齒paint3.setStrokeWidth((float) 1);//設定線寬1paint3.setStyle(Paint.Style.STROKE);//設定空心畫筆,環形方式繪製paint3.setAlpha(alpha3);}}


聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.