不知不覺這個春節也已經過完了,遺憾家里沒網,沒能及時給大家送上祝福,今天回到深圳,明天就要上班了,小伙伴們是不是和我一樣呢?今天講的是一個大家都見過的動畫,雷達搜索好友嘛,原理也十分的簡單,你看完我的分析,也會覺得很簡單了,國際慣例,無圖無真相,我們先看看效果圖,對了,真
測試機送人了,所講這段時間應該一直用模擬器顯示吧!
仿微信雷達掃描,仿安卓微信、云播雷達掃描動畫效果點擊中間的黑色圓圈開始掃描動畫,再次點擊復位,需要這種效果的朋友可以自己下載看一下。
效果圖如下所示:
這個界面相信大家都認識,我們來說下原理,其實就三層
中間是一張圖片,然后畫四個圓,這個應該簡單吧,不會的可以看下Android繪圖機制(二)――自定義View繪制形, 圓形, 三角形, 扇形, 橢圓, 曲線,文字和圖片的坐標講解,然后最上面就是一個漸變的圓了,這個圓我們只要讓他不停的旋轉就可以了,那我們新建一個工程――RadarSearch
layou_main.xml
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"xmlns:tools="http://schemas.android.com/tools"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@drawable/photo" ><com.lgl.radarsearch.RadarViewandroid:layout_width="match_parent"android:layout_height="match_parent" /><ImageViewandroid:layout_width="wrap_content"android:layout_height="wrap_content"android:layout_centerInParent="true"android:src="@drawable/circle_photo" /></RelativeLayout>
我們新建一個RadarView
RadarViewpackage com.lgl.radarsearch;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.view.View;/*** 雷達搜索* * @author LGL**/public class RadarView extends View {/*** 思路:我們首先初始化畫筆,并且獲取到控件的寬高,在onMeasure()中設置鋪滿,然后在onDraw()方法中繪制四個靜態圓和一個漸變圓,* 我們通過Matrix矩陣來讓他不停的旋轉就達到我們想要的效果了*/private Paint mPaintLine, mPaintCircle;private int w, h;// 動畫private Matrix matrix;// 旋轉角度private int start;// Handler定時動畫private Handler handler = new Handler();private Runnable run = new Runnable() {@Overridepublic void run() {start = start + 1;matrix = new Matrix();// 參數:旋轉角度,圍繞點坐標的x,y坐標點matrix.postRotate(start, w / 2, h / 2);// 刷新重繪RadarView.this.invalidate();// 繼續循環handler.postDelayed(run, 60);}};public RadarView(Context context, AttributeSet attrs) {super(context, attrs);initView();// 獲取高寬w = context.getResources().getDisplayMetrics().widthPixels;h = context.getResources().getDisplayMetrics().heightPixels;// 一致旋轉handler.post(run);}private void initView() {mPaintLine = new Paint();mPaintLine.setColor(Color.WHITE);mPaintLine.setAntiAlias(true);mPaintLine.setStyle(Style.STROKE);mPaintCircle = new Paint();mPaintCircle.setColor(Color.RED);mPaintCircle.setAntiAlias(true);matrix = new Matrix();}/*** 測量* * @author LGL*/@Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {// 設置鋪滿setMeasuredDimension(w, h);}@Overrideprotected void onDraw(Canvas canvas) {super.onDraw(canvas);// 畫四個圓形canvas.drawCircle(w / 2, h / 2, w / 2, mPaintLine);canvas.drawCircle(w / 2, h / 2, w / 3, mPaintLine);canvas.drawCircle(w / 2, h / 2, w * 7 / 10, mPaintLine);canvas.drawCircle(w / 2, h / 2, w / 4, mPaintLine);// 繪制漸變圓Shader mShader = new SweepGradient(w / 2, h / 2, Color.TRANSPARENT,Color.parseColor("#AAAAAAAA"));// 繪制時漸變mPaintCircle.setShader(mShader);// 增加旋轉動畫,使用矩陣實現canvas.concat(matrix); // 前置動畫canvas.drawCircle(w / 2, h / 2, w * 7 / 10, mPaintCircle);}}
以上所述是小編給大家介紹的Android仿微信雷達輻射搜索好友(邏輯清晰實現簡單)的相關知識,希望對大家有所幫助。
新聞熱點
疑難解答
圖片精選