最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Android實(shí)現(xiàn)自定義華麗的水波紋效果

 更新時間:2016年08月31日 16:29:24   投稿:daisy  
關(guān)于Android的水波紋效果小編之前給大家也分享幾篇類似的,有興趣可通過下面的相關(guān)文章進(jìn)行查看,今天給大家再分享一個華麗的水波紋效果,這個效果很不錯,感興趣的可以參考借鑒。

先來看看效果

實(shí)現(xiàn)效果

模擬水波紋的效果:點(diǎn)擊屏幕就有圓環(huán)出現(xiàn),半徑從小到大,透明度從大到小(0為透明)

實(shí)現(xiàn)思路

      1.自定義類繼承View。

      2.定義每個圓環(huán)的實(shí)體類 Wave,并初始化繪制圓環(huán)的畫筆的數(shù)據(jù)。

      3.重寫onTouchEvent方法,down時,獲得坐標(biāo)點(diǎn),做為圓環(huán)圓心。

      4.發(fā)送handler信息,對數(shù)據(jù)進(jìn)行修改,刷新頁面。

      5.重寫onDraw方法,繪制一個圓環(huán)。

1. 自定義類繼承View

新建WaterWaveView2類繼承View

public class WaterWaveView2 extends View {

  //存放圓環(huán)的集合
  private ArrayList<Wave> mList;

  //界面刷新
  private Handler mHandler = new Handler() {
    @Override
    public void handleMessage(Message msg) {
      invalidate();//刷新界面,會執(zhí)行onDraw方法
    }
  };

  public WaterWaveView2(Context context) {
    this(context, null);
  }

  public WaterWaveView2(Context context, AttributeSet attrs) {
    super(context, attrs);
    mList = new ArrayList<Wave>();
  }

2. 定義實(shí)體類 Wave

/**
* Created by HongJay on 2016/8/30.
* 把wave的數(shù)據(jù)封裝成一個對象
*/
public class Wave {
  public float x;//圓心x坐標(biāo)
  public float y;//圓心y坐標(biāo)
  public Paint paint; //畫圓的畫筆
  public float width; //線條寬度
  public int radius; //圓的半徑
  public int ranNum;//隨機(jī)數(shù)
  public int[] randomColor={Color.BLUE,Color.CYAN,
      Color.GREEN,Color.MAGENTA,Color.RED,Color.YELLOW};

  public Wave(float x, float y) {
    this.x = x;
    this.y = y;
    initData();
  }
  /**
   * 初始化數(shù)據(jù),每次點(diǎn)擊一次都要初始化一次
   */
  private void initData() {
    paint=new Paint();//因?yàn)辄c(diǎn)擊一次需要畫出不同的圓環(huán)
    paint.setAntiAlias(true);//打開抗鋸齒
    ranNum=(int) (Math.random()*6);//[0,5]的隨機(jī)數(shù)
    paint.setColor(randomColor[ranNum]);//設(shè)置畫筆的顏色
    paint.setStyle(Paint.Style.STROKE);//描邊
    paint.setStrokeWidth(width);//設(shè)置描邊寬度
    paint.setAlpha(255);//透明度的設(shè)置(0-255),0為完全透明
    radius=0;//初始化
    width=0;
  }
}

3. 重寫onTouchEvent方法
獲得圓心,并且刪除集合中透明度為0的圓環(huán),通知handler調(diào)用onDraw()方法

public boolean onTouchEvent(MotionEvent event) {
    super.onTouchEvent(event);
    switch (event.getAction()) {
      case MotionEvent.ACTION_DOWN:

        float x = event.getX();
        float y = event.getY();
        deleteItem();
        Wave wave = new Wave(x, y);
        mList.add(wave);

        //刷新界面
        invalidate();
        break;

      case MotionEvent.ACTION_MOVE:
        float x1 = event.getX();
        float y1 = event.getY();
        deleteItem();
        Wave wave1 = new Wave(x1, y1);
        mList.add(wave1);

        invalidate();
        break;
    }
    //處理事件
    return true;
  }
  //刪除透明度已經(jīng)為0的圓環(huán)
  private void deleteItem(){
    for (int i = 0; i <mList.size() ; i++) {
      if(mList.get(i).paint.getAlpha()==0){
        mList.remove(i);
      }
    }
  }
}

4. 重寫onDraw()方法,循環(huán)繪制圓環(huán)

protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);

    //避免程序一運(yùn)行就進(jìn)行繪制
    if (mList.size() > 0) {

      //對集合中的圓環(huán)對象循環(huán)繪制
      for (Wave wave : mList) {
        canvas.drawCircle(wave.x, wave.y, wave.radius, wave.paint);
        wave.radius += 3;
        //對畫筆透明度進(jìn)行操作
        int alpha = wave.paint.getAlpha();
        if (alpha < 80) {
          alpha = 0;
        } else {
          alpha -= 3;
        }

        //設(shè)置畫筆寬度和透明度
        wave.paint.setStrokeWidth(wave.radius / 8);
        wave.paint.setAlpha(alpha);

        //延遲刷新界面
        mHandler.sendEmptyMessageDelayed(1, 100);
      }
    }
  }

總結(jié)

以上就是Android實(shí)現(xiàn)自定義水波紋效果的全部內(nèi)容,怎么樣?實(shí)現(xiàn)的效果不錯吧,感興趣的小伙伴們快快自己動手實(shí)踐起來,希望這篇文章對大家的學(xué)習(xí)和工作能有所幫助。

相關(guān)文章

  • Android Studio 新建項(xiàng)目通過git上傳到碼云圖文教程詳解

    Android Studio 新建項(xiàng)目通過git上傳到碼云圖文教程詳解

    本文通過圖文并茂的方式給大家介紹了Android Studio 新建項(xiàng)目通過git上傳到碼云的方法,需要的朋友可以參考下
    2017-11-11
  • Android 快速繪制一個圓角矩形的實(shí)例

    Android 快速繪制一個圓角矩形的實(shí)例

    下面小編就為大家分享一篇Android 快速繪制一個圓角矩形的實(shí)例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-01-01
  • Android 無預(yù)覽拍照功能

    Android 無預(yù)覽拍照功能

    最近小編接到一個項(xiàng)目,遇到這樣的需求,要求在后臺拍照并保存功能,也就是無預(yù)覽拍照功能,下面小編給大家?guī)砹藢?shí)例代碼,需要的朋友參考下
    2018-02-02
  • Android實(shí)現(xiàn)圓圈倒計時

    Android實(shí)現(xiàn)圓圈倒計時

    這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)圓圈倒計時,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • Android仿微信語音聊天功能

    Android仿微信語音聊天功能

    這篇文章主要介紹了Android仿微信語音聊天功能,很實(shí)用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2015-12-12
  • 使用Android原生WebView+Highcharts實(shí)現(xiàn)可左右滑動的折線圖

    使用Android原生WebView+Highcharts實(shí)現(xiàn)可左右滑動的折線圖

    折線圖是Android開發(fā)中經(jīng)常會碰到的效果,但由于涉及自定義View的知識,對許多剛?cè)腴T的小白來說會覺得很高深,下面這篇文章主要給大家介紹了關(guān)于如何使用Android原生WebView+Highcharts實(shí)現(xiàn)可左右滑動的折線圖的相關(guān)資料,需要的朋友可以參考下
    2022-05-05
  • Android編程實(shí)現(xiàn)動畫自動播放功能

    Android編程實(shí)現(xiàn)動畫自動播放功能

    這篇文章主要介紹了Android編程實(shí)現(xiàn)動畫自動播放功能,結(jié)合實(shí)例形式分析了Android動畫自動播放功能的實(shí)現(xiàn)方法與相關(guān)注意事項(xiàng),需要的朋友可以參考下
    2017-07-07
  • Android從圖片獲取二維碼的方法

    Android從圖片獲取二維碼的方法

    這篇文章主要為大家詳細(xì)介紹了Android從圖片獲取二維碼的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-05-05
  • Android最新狀態(tài)欄處理介紹

    Android最新狀態(tài)欄處理介紹

    大家好,本篇文章主要講的是Android最新狀態(tài)欄處理介紹,感興趣的同學(xué)趕快來看一看吧,對你有幫助的話記得收藏一下,方便下次瀏覽
    2021-12-12
  • Android實(shí)現(xiàn)網(wǎng)絡(luò)加載時的對話框功能

    Android實(shí)現(xiàn)網(wǎng)絡(luò)加載時的對話框功能

    這篇文章主要介紹了Android實(shí)現(xiàn)網(wǎng)絡(luò)加載時的對話框功能,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-02-02

最新評論

红桥区| 云龙县| 阿拉善左旗| 五指山市| 杂多县| 定陶县| 孟州市| 靖江市| 五指山市| 西宁市| 麟游县| 汾阳市| 乐陵市| 时尚| 玉山县| 琼海市| 黄大仙区| 陕西省| 吴忠市| 扶余县| 桦甸市| 大港区| 宁陕县| 永靖县| 昔阳县| 通辽市| 乌审旗| 尼木县| 共和县| 澄迈县| 康平县| 亚东县| 黎川县| 徐水县| 潮州市| 五原县| 涟源市| 新密市| 吴堡县| 栾城县| 衡南县|