仿微信雷達(dá)掃描
作者:冰點(diǎn)
仿微信雷達(dá)掃描,仿安卓微信、云播雷達(dá)掃描動畫效果點(diǎn)擊中間的黑色圓圈開始掃描動畫,再次點(diǎn)擊復(fù)位,需要這種效果的朋友可以自己下載看一下。
源碼簡介:仿微信雷達(dá)掃描,仿安卓微信、云播雷達(dá)掃描動畫效果點(diǎn)擊中間的黑色圓圈開始掃描動畫,再次點(diǎn)擊復(fù)位,需要這種效果的朋友可以自己下載看一下。
源碼效果:
源碼片段:
- package com.example.tz_demo_8_7;
- import android.content.Context;
- import android.graphics.Canvas;
- import android.graphics.Color;
- import android.graphics.Matrix;
- import android.graphics.Paint;
- import android.graphics.Paint.Style;
- import android.graphics.Shader;
- import android.graphics.SweepGradient;
- import android.os.Handler;
- import android.util.AttributeSet;
- import android.widget.FrameLayout;
- public class MyRadarView extends FrameLayout {
- private Paint mPaintNormal; // 繪制普通圓圈和線的畫筆
- private Paint mPaintCircle;// 繪制漸變圓
- private int w,h; // 手機(jī)屏幕的寬高,雷達(dá)視圖父容器的寬高
- private Matrix matrix;
- private Handler handler=new Handler();
- private int start;
- private Runnable r=new Runnable() {
- @Override
- public void run() {
- // 執(zhí)行循環(huán)旋轉(zhuǎn)動畫,并且刷新UI
- start=start+2;
- matrix=new Matrix();
- matrix.postRotate(start, w/2, h/2);// 設(shè)置畫布旋轉(zhuǎn)
- MyRadarView.this.invalidate(); // 刷新UI
- handler.postDelayed(r,20);
- }
- };
- public MyRadarView(Context context, AttributeSet attrs) {
- super(context, attrs);
- // 初始化畫筆
- initPaint();
- setBackgroundResource(R.drawable.bg);
- // 獲取手機(jī)屏幕寬高
- this.w=context.getResources().getDisplayMetrics().widthPixels;
- this.h=context.getResources().getDisplayMetrics().heightPixels;
- handler.post(r);
- }
- /**
- * @author Xubin Single QQ:215298766
- */
- private void initPaint() {
- mPaintNormal=new Paint();// 創(chuàng)建畫筆
- mPaintNormal.setColor(Color.parseColor("#A1A1A1"));
- mPaintNormal.setStrokeWidth(3);// 設(shè)置線條
- mPaintNormal.setAntiAlias(true);// 設(shè)置抗鋸齒
- mPaintNormal.setStyle(Style.STROKE);
- // 繪制漸變圓
- mPaintCircle=new Paint();
- mPaintCircle.setColor(0x9D00ff00);// 16進(jìn)制
- mPaintCircle.setAntiAlias(true);
- }
- /**
- * 測量控件的寬高
- */
- @Override
- protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
- // 設(shè)置此視圖的寬高
- setMeasuredDimension(w, h);
- }
- /**
- * 確定控件的視圖
- */
- @Override
- protected void onDraw(Canvas canvas) {
- // 屏幕中心,x:w/2,y:h/2
- canvas.drawCircle(w/2, h/2, w/6, mPaintNormal); // 繪制小圓
- canvas.drawCircle(w/2, h/2, 2*w/6, mPaintNormal); // 繪制中圓
- canvas.drawCircle(w/2, h/2, 11*w/20, mPaintNormal); // 繪制中大圓
- canvas.drawCircle(w/2, h/2, 7*h/16, mPaintNormal); // 繪制大圓
- // 繪制漸變色的圓
- Shader shader=new SweepGradient(w/2, h/2, Color.TRANSPARENT, Color.parseColor("#AAAAAAAA"));
- mPaintCircle.setShader(shader);
- canvas.concat(matrix);
- canvas.drawCircle(w/2, h/2, 7*h/16, mPaintCircle); //繪制漸變圓
- super.onDraw(canvas);
- }
- }
責(zé)任編輯:倪明
來源:
devstore