<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>

                ??碼云GVP開源項目 12k star Uniapp+ElementUI 功能強大 支持多語言、二開方便! 廣告
                # Android特效專輯(十)——點擊水波紋效果實現,邏輯清晰實現簡單 > 這次做的東西呢,和上篇有點類似,就是用比較簡單的邏輯思路去實現一些比較好玩的特效,最近也是比較忙,所以博客更新的速度還得看時間去推演,但是也能保證一周三更的樣子,現在也還是以小功能,或者說是一些小入門級別的博客為主,我也不算是什么很厲害的人,很多細節的支持處理的仍然還是不到位,所以也是一直在彌補,話不多說,來看看今天的效果 ![](https://box.kancloud.cn/2016-02-24_56cd2c1ae7699.jpg) > 實現起來很簡單吧,那我們就來看一下他是怎么實現的咯! ## OnclickRuning ~~~ package com.lgl.onclickruning; import android.content.Context; import android.graphics.Canvas; import android.graphics.Color; import android.graphics.Paint; import android.graphics.Paint.Style; import android.os.Handler; import android.util.AttributeSet; import android.util.Log; import android.view.MotionEvent; import android.view.View; /** * 點擊水波紋漣漪動畫效果 * * @author LGL * */ public class Runing extends View { // 畫筆 private Paint mPaint; // 內圓寬度 private int strokeWidth; // 圓心x private int cx; // 圓心y private int cy; // 半徑 private int radius; // Handler消息 private static final int FLUSH = 0; public Runing(Context context, AttributeSet attrs) { super(context, attrs); init(); } private void init() { // 初始化畫筆 mPaint = new Paint(); // 抗鋸齒 mPaint.setAntiAlias(true); // 設置顏色 mPaint.setColor(Color.BLUE); // 設置空心 mPaint.setStyle(Style.STROKE); // 設置內圓的寬度 mPaint.setStrokeWidth(strokeWidth); // 設置透明度 0-255 mPaint.setAlpha(255); // 初始值 strokeWidth = 0; radius = 0; } /** * 繪制 */ @Override protected void onDraw(Canvas canvas) { super.onDraw(canvas); // 繪制圓環 canvas.drawCircle(cx, cy, radius, mPaint); } /** * 觸摸事件 */ @Override public boolean onTouchEvent(MotionEvent event) { // 判斷手勢按下和抬起 switch (event.getAction()) { case MotionEvent.ACTION_DOWN: /** * 按下去開始畫圓,也就是起漣漪,所以我們首先得獲取到按下的坐標,事實上,我們要做這樣操作的開發,都必須先提前拿到該有的坐標 */ cx = (int) event.getX(); cy = (int) event.getY(); Log.i("坐標", "圓心x:" + cx + "圓心y:" + cy); break; } // 初始化 init(); // 發送 handler.sendEmptyMessage(FLUSH); return true; } /** * 刷新狀態 */ private void flush() { // 半徑每次+10 radius += 10; // 線條的寬度每次都是半徑的四分之一 strokeWidth = radius / 4; // 重新設置給畫筆 mPaint.setStrokeWidth(strokeWidth); // 顏色漸變,每次減少20的色值 int nextAlpha = mPaint.getAlpha() - 20; // 避免等于負數 if (nextAlpha < 20) { // 直接設置為透明 nextAlpha = 0; } // 繼續重新設置給畫筆 mPaint.setAlpha(nextAlpha); } private Handler handler = new Handler() { public void handleMessage(android.os.Message msg) { switch (msg.what) { case FLUSH: // 更改參數狀態 flush(); // 刷新 執行我們的繪制方法 invalidate(); // 繼續驗證透明度,只要不為0就一直發送,直到透明 if (mPaint.getAlpha() != 0) { handler.sendEmptyMessageDelayed(FLUSH, 100); } break; } } }; } ~~~ ## layout_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" > <com.lgl.onclickruning.Runing android:layout_width="match_parent" android:layout_height="match_parent" /> </RelativeLayout> ~~~ > 代碼其實很簡單,我們簡單的邏輯就可以實現了,但是別小看了這個思維,你可以用這個邏輯去實現更多有趣的特效,這里就期待你的挖掘了,嘻嘻 ## Demo下載地址:[http://download.csdn.net/detail/qq_26787115/9433534](http://download.csdn.net/detail/qq_26787115/9433534)
                  <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>

                              哎呀哎呀视频在线观看