<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                # Android特效專輯(九)——仿微信雷達搜索好友特效,邏輯清晰實現簡單 > 不知不覺這個春節也已經過完了,遺憾家里沒網,沒能及時給大家送上祝福,今天回到深圳,明天就要上班了,小伙伴們是不是和我一樣呢?今天講的是一個大家都見過的動畫,雷達搜索好友嘛,原理也十分的簡單,你看完我的分析,也會覺得很簡單了,國際慣例,無圖無真相,我們先看看效果圖,對了,真? > 測試機送人了,所講這段時間應該一直用模擬器顯示吧! ## 截圖 ![](https://box.kancloud.cn/2016-02-24_56cd2c1a5da6a.jpg) > 這個界面相信大家都認識,我們來說下原理,其實就三層 ![](https://box.kancloud.cn/2016-02-24_56cd2c1aa26e7.jpg) > 中間是一張圖片,然后畫四個圓,這個應該簡單吧,不會的可以看下[Android繪圖機制(二)——自定義View繪制形, 圓形, 三角形, 扇形, 橢圓, 曲線,文字和圖片的坐標講解](http://blog.csdn.net/qq_26787115/article/details/50466655),然后最上面就是一個漸變的圓了,這個圓我們只要讓他不停的旋轉就可以了,那我們新建一個工程——RadarSearch ![](https://box.kancloud.cn/2016-02-24_56cd2c1abb2ac.jpg) ## 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.RadarView android:layout_width="match_parent" android:layout_height="match_parent" /> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_centerInParent="true" android:src="@drawable/circle_photo" /> </RelativeLayout> ~~~ > 我們新建一個RadarView ## RadarView ~~~ package 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() { @Override public 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 */ @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { // 設置鋪滿 setMeasuredDimension(w, h); } @Override protected 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); } } ~~~ ## Demo下載地址:[http://download.csdn.net/detail/qq_26787115/9430942](http://download.csdn.net/detail/qq_26787115/9430942)
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看