真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

怎么在android中利用貝塞爾曲線實現(xiàn)波浪效果

怎么在android中利用貝塞爾曲線實現(xiàn)波浪效果?針對這個問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)建站自2013年創(chuàng)立以來,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項目網(wǎng)站建設(shè)、成都網(wǎng)站建設(shè)網(wǎng)站策劃,項目實施與項目整合能力。我們以讓每一個夢想脫穎而出為使命,1280元鹽田做網(wǎng)站,已為上家服務(wù),為鹽田各地企業(yè)和個人服務(wù),聯(lián)系電話:028-86922220

public class WaveView extends View implements View.OnClickListener {
  //路徑
  private Path mPath;
  //畫筆
  private Paint mPaint;
  //屏幕高度
  private int screenHeight;
  //屏幕寬度
  private int screenWidth;
  //波長 自己控制
  private int waveLength = 800;
  //波長的數(shù)量
  private int waveCount;
  //貝塞爾曲線的控制點
  private int centerY;
  private ValueAnimator mValueAnimator;
  //偏移量
  private int mOffset;
 
  public WaveView(Context context) {
    this(context, null);
  }
 
  public WaveView(Context context, @Nullable AttributeSet attrs) {
    super(context, attrs);
    init();
  }
 
  private void init() {
    //初始化畫筆
    mPaint = new Paint(Paint.ANTI_ALIAS_FLAG);
    mPaint.setStyle(Paint.Style.FILL);
    mPaint.setColor(Color.RED);
    
    mPath = new Path();
  }
 
  @Override
  protected void onSizeChanged(int w, int h, int oldw, int oldh) {
    super.onSizeChanged(w, h, oldw, oldh);
    screenHeight = h;// 獲取屏幕高度
    screenWidth = w;//獲取屏幕寬度
  
    centerY = h / 2;//設(shè)置中心點
    waveCount = (int) Math.round(screenWidth / waveLength + 1.5);//波長的數(shù)量
  }
 
  @Override
  protected void onDraw(Canvas canvas) {
    super.onDraw(canvas);
    mPath.reset();
    //首先移動到最左邊 offset是偏移量
    mPath.moveTo(-waveLength + mOffset, centerY);
    for (int i = 0; i < waveCount; i++) {
      //先畫底部的曲線  負(fù)的波長的3/4 第二次加一個波長的長度 以及加偏移量  曲線是向下的,控制點加60    終點則為負(fù)的波長的1/2 + 波長的長度 和偏移量 
      mPath.quadTo(-waveLength * 3 / 4 + i * waveLength + mOffset, centerY + 60, -waveLength / 2 + i * waveLength + mOffset, centerY);
      //再畫頂部的曲線  負(fù)的波長的1/4                 曲線是向上的,控制點減60 
      mPath.quadTo(-waveLength * 1 / 4 + i * waveLength + mOffset, centerY - 60, 0 + i * waveLength + mOffset, centerY);
    }
    //閉合路徑
    mPath.lineTo(screenWidth, screenHeight);
    mPath.lineTo(0, screenHeight);
    mPath.close();
    canvas.drawPath(mPath, mPaint);
    //設(shè)置點擊時間只是為了點擊以后才開始循環(huán)
    setOnClickListener(this);
  }
 
  @Override
  public void onClick(View view) {
    //主要是為了獲取偏移量
    mValueAnimator = ValueAnimator.ofInt(0, waveLength);
    mValueAnimator.setDuration(1000);
    mValueAnimator.setRepeatCount(ValueAnimator.INFINITE);
    mValueAnimator.setInterpolator(new LinearInterpolator());
    mValueAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
      @Override
      public void onAnimationUpdate(ValueAnimator valueAnimator) {
        mOffset = (int) valueAnimator.getAnimatedValue();
        //重繪
        invalidate();
      }
    });
    mValueAnimator.start();
  }
}

Android是什么

Android是一種基于Linux內(nèi)核的自由及開放源代碼的操作系統(tǒng),主要使用于移動設(shè)備,如智能手機(jī)和平板電腦,由美國Google公司和開放手機(jī)聯(lián)盟領(lǐng)導(dǎo)及開發(fā)。

關(guān)于怎么在android中利用貝塞爾曲線實現(xiàn)波浪效果問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。


文章題目:怎么在android中利用貝塞爾曲線實現(xiàn)波浪效果
瀏覽地址:http://weahome.cn/article/picioj.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部