欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

先來(lái)看看效果

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

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

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

      1.自定義類繼承View。

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

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

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

      5.重寫(xiě)onDraw方法,繪制一個(gè)圓環(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();//刷新界面,會(huì)執(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ù)封裝成一個(gè)對(duì)象
*/
public class Wave {
  public float x;//圓心x坐標(biāo)
  public float y;//圓心y坐標(biāo)
  public Paint paint; //畫(huà)圓的畫(huà)筆
  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à)出不同的圓環(huán)
    paint.setAntiAlias(true);//打開(kāi)抗鋸齒
    ranNum=(int) (Math.random()*6);//[0,5]的隨機(jī)數(shù)
    paint.setColor(randomColor[ranNum]);//設(shè)置畫(huà)筆的顏色
    paint.setStyle(Paint.Style.STROKE);//描邊
    paint.setStrokeWidth(width);//設(shè)置描邊寬度
    paint.setAlpha(255);//透明度的設(shè)置(0-255),0為完全透明
    radius=0;//初始化
    width=0;
  }
}

3. 重寫(xiě)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. 重寫(xiě)onDraw()方法,循環(huán)繪制圓環(huán)

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

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

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

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

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

總結(jié)

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

相關(guān)文章

  • Android 靜默安裝和智能安裝的實(shí)現(xiàn)方法

    Android 靜默安裝和智能安裝的實(shí)現(xiàn)方法

    靜默安裝就是無(wú)聲無(wú)息的在后臺(tái)安裝apk,沒(méi)有任何界面提示。智能安裝就是有安裝界面,但全部是自動(dòng)的,不需要用戶去點(diǎn)擊。下面腳本之家小編給大家介紹下Android 靜默安裝和智能安裝的實(shí)現(xiàn)方法,感興趣的朋友一起看看吧
    2018-01-01
  • Kotlin中Suppress的非常規(guī)用法示例

    Kotlin中Suppress的非常規(guī)用法示例

    這篇文章主要給大家介紹了關(guān)于Kotlin中Suppress的非常規(guī)用法的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2018-12-12
  • Android Listview上下拉動(dòng)刷新tab滑動(dòng)切換功能

    Android Listview上下拉動(dòng)刷新tab滑動(dòng)切換功能

    這篇文章主要介紹了Android Listview上下拉動(dòng)刷新tab滑動(dòng)切換功能的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-04-04
  • Android NotificationManager簡(jiǎn)單使用詳解

    Android NotificationManager簡(jiǎn)單使用詳解

    這篇文章主要為大家詳細(xì)介紹了Android NotificationManager的簡(jiǎn)單使用,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2021-11-11
  • Android圖片等比例縮放和填充屏幕效果

    Android圖片等比例縮放和填充屏幕效果

    這篇文章主要為大家詳細(xì)介紹了Android圖片等比例縮放和填充屏幕效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-09-09
  • Android編程之高效開(kāi)發(fā)App的10個(gè)建議

    Android編程之高效開(kāi)發(fā)App的10個(gè)建議

    這篇文章主要介紹了Android編程之高效開(kāi)發(fā)App的10個(gè)建議,較為詳細(xì)的分析了Android開(kāi)發(fā)中的常見(jiàn)問(wèn)題與注意事項(xiàng),具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-10-10
  • Android Cocos Creator游戲開(kāi)發(fā)平臺(tái)打包優(yōu)化實(shí)現(xiàn)方案

    Android Cocos Creator游戲開(kāi)發(fā)平臺(tái)打包優(yōu)化實(shí)現(xiàn)方案

    Cocos Creator是一款輕量、高效、免費(fèi)開(kāi)源的跨平臺(tái)游戲引擎,同時(shí)也是實(shí)時(shí)3D內(nèi)容創(chuàng)作平臺(tái),不僅支持2D、3D的游戲開(kāi)發(fā),同時(shí)在HMI、IoT、XR、虛擬人偶等領(lǐng)域,均可提供一套完善的行業(yè)解決方案
    2022-11-11
  • Android中FloatingActionButton的顯示與隱藏示例

    Android中FloatingActionButton的顯示與隱藏示例

    本篇文章主要介紹了Android中FloatingActionButton的顯示與隱藏示例,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2017-10-10
  • Android編程之簡(jiǎn)單啟動(dòng)畫(huà)面實(shí)現(xiàn)方法

    Android編程之簡(jiǎn)單啟動(dòng)畫(huà)面實(shí)現(xiàn)方法

    這篇文章主要介紹了Android編程之簡(jiǎn)單啟動(dòng)畫(huà)面實(shí)現(xiàn)方法,結(jié)合實(shí)例形式較為詳細(xì)的分析了開(kāi)機(jī)啟動(dòng)畫(huà)面的制作步驟及布局、Activity跳轉(zhuǎn)、權(quán)限控制等的相關(guān)操作技巧,需要的朋友可以參考下
    2016-11-11
  • Android實(shí)現(xiàn)新浪微博一鍵分享的實(shí)例代碼

    Android實(shí)現(xiàn)新浪微博一鍵分享的實(shí)例代碼

    這篇文章主要介紹了Android實(shí)現(xiàn)新浪微博一鍵分享的實(shí)例代碼,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評(píng)論