精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android動畫之萌萌噠蠟燭吹蠟燭動畫

移動開發 Android
最近開始寫一些文章記錄一下以前的一些自己寫的小項目或者是定義View積累,積灰的東西還是要多翻出來整理整理看看的。這個只完成了一部分燃起熄滅的動畫,沒有為何燃起火焰的動畫,希望有興趣的同學也可以接著完成并分享。

一、簡介

最近開始寫一些文章記錄一下以前的一些自己寫的小項目或者是定義View積累,積灰的東西還是要多翻出來整理整理看看的。這個只完成了一部分燃起熄滅的動畫,沒有為何燃起火焰的動畫,希望有興趣的同學也可以接著完成并分享,話不多說,我們來看這兩根萌萌的小蠟燭。 

 

 

 

小蠟燭憋足氣把火焰燃起,一下被旁邊的哥們吹滅了 0^0 ,看起來還是萌氣十足的啊。看著圖大家應該能想到應該怎么實現了吧,自定義View!對了,但是具體要怎么把這個過程做好呢,跟著腳步一起來看一看吧。代碼稍微有點多,大家耐心觀看,有興趣的同學可以從我的GITHUB上clone下來,對著代碼看。

二、過程實現

蠟燭的繪制和動畫

  • 本著面向對象的思想,很明顯這里就是兩個蠟燭嘛!既然是這樣那我們就定義一個蠟燭類具有蠟燭的基本屬性。 

 

 

  

  1. public abstract class ICandle { 
  2.  
  3.  
  4.     //蠟燭底部左下坐標 
  5.  
  6.     protected int mCurX; 
  7.  
  8.     protected int mCurY; 
  9.  
  10.     //蠟燭寬高 
  11.  
  12.     protected int mCandleWidth; 
  13.  
  14.     protected int mCandleHeight; 
  15.  
  16.     //蠟燭左眼坐標 
  17.  
  18.     protected Point mEyeLPoint; 
  19.  
  20.     //蠟燭右眼坐標 
  21.  
  22.     protected Point mEyeRPoint; 
  23.  
  24.     //蠟燭眼睛半徑 
  25.  
  26.     protected int mEyeRadius; 
  27.  
  28.     //眼睛間隔距離 
  29.  
  30.     protected int mEyeDevide; 
  31.  
  32.     //身體顏色 
  33.  
  34.     protected int mCandleColor; 
  35.  
  36.     //是否停止動畫中 
  37.  
  38.     protected boolean mIsAnimStoping = false
  39.  
  40.     //蠟燭芯坐標 
  41.  
  42.     protected Point mCandlewickPoint; 
  43.  
  44.     public void initAnim(){ 
  45.  
  46.     } 
  47.  
  48.     public void stopAnim(){ 
  49.  
  50.     } 
  51.  
  52.     public void drawSelf(Canvas canvas){ 
  53.  
  54.     } 
  55.  

 對應著這蠟燭還有代碼,那就一目了然了。可能需要解釋的應該就是下面的幾個方法了public void initAnim(), stopAnim()初始化開始和結束動畫需要的數據,小蠟燭將會實現這個方法,drawSelf(Canvas canvas)把畫布傳進來然后蠟燭自己繪制自己。

現在就是讓我們來看一看小蠟燭身體內部構造的時候了,hiahiahiahia!

不對,和蠟燭生死相隨的還有火焰呢!先來看看火焰吧,等下小蠟燭還要燃燒自己呢。+10086s

Flame

  • 一樣先來一睹我們的富勒姆真容 

 

 

  

 

 

 

好像也沒什么毛病,首先是里面的區域,就是Flame啦,外面的呢,就是Flame先生燃燒自己散發的人性之光和飄散的骨灰(手動抹眼淚)。

來看一下Flame的實現吧。我們一步步分析。

  1. private static float CHANGE_FACTOR = 20; 
  2.  
  3.    private Paint mPaint; 
  4.  
  5.    private Path mPath; 
  6.  
  7.    //左下點坐標 
  8.  
  9.    private int mCurX; 
  10.  
  11.    private int mCurY; 
  12.  
  13.    //火焰寬度 
  14.  
  15.    private int mWidth; 
  16.  
  17.    //火焰高度 
  18.  
  19.    private int mHeight; 
  20.  
  21.    //記錄初始高度 
  22.  
  23.    private int mPreHeight; 
  24.  
  25.    //記錄初始寬度 
  26.  
  27.    private int mPreWidth; 
  28.  
  29.    //火焰頂部貝塞爾曲線控制點變化參數 
  30.  
  31.    private int mTopXFactor; 
  32.  
  33.    private int mTopYFactor; 
  34.  
  35.    //用于實現火焰的抖動 
  36.  
  37.    private Random mRandom; 
  38.  
  39.    //光環半徑 
  40.  
  41.    private int mHaloRadius; 
  42.  
  43.    //正在燃燒 
  44.  
  45.    private boolean mIsFiring; 
  46.  
  47.    //是否啟動停止動畫 
  48.  
  49.    private boolean mIsStopAnim = false
  50.  
  51.    private boolean mFlagStop = false
  52.  
  53.    private LinearGradient mLinearGradient; 
  54.  
  55.    private RadialGradient mRadialGradient; 
  56.  
  57.    private ValueAnimator mFlameAnimator; 
  58.  
  59.    private ValueAnimator mHaloAnimator; 

 參數就是這些了,主要是我們的動畫實現過程,也就是我們的屬性動畫ValueAnimator這里還有兩個渲染類不知道大家用過沒有,LinearGradient和RadialGradient不了解的同學可以直接點我的博文了解一下。LinearGradient繪制出了火焰,RadialGradient繪制除了發散的光芒。

初始化的過程我就不寫了,大家對這代碼看吧。那主要的就是小火焰的是怎么繪制出來的呢 show the code

  1. mPaint.setStyle(Paint.Style.FILL); 
  2.  
  3.    mPaint.setShader(mLinearGradient); 
  4.  
  5.    mPath.reset(); 
  6.  
  7.    mPath.moveTo(mCurX, mCurY); 
  8.  
  9.    mPath.quadTo(mCurX + mWidth / 2, 
  10.  
  11.            mCurY + mHeight / 3, 
  12.  
  13.            mCurX + mWidth, mCurY); 
  14.  
  15.    mPath.quadTo(mCurX + mWidth / 2 + ((1 - mRandom.nextFloat()) * CHANGE_FACTOR) + mTopXFactor, 
  16.  
  17.            mCurY - 2 * mHeight + mTopYFactor, 
  18.  
  19.            mCurX, mCurY); 
  20.  
  21.    canvas.drawPath(mPath, mPaint); 

 這就是火焰flame的繪制,可以看到這里用到了二次貝塞爾曲線的繪制,不太清楚貝塞爾曲線的同學也可以點這波浪Loading動畫(貝塞爾曲線)有簡單的介紹,當時是用在一個水波的view里面。這里的繪制是以前面那個圖里面的矩形為參照,我們再來看一下這個圖(當然是加強版hiahia)。 

 

 

 

那為什么上面的x坐標還加了mRandom.nextFloat()) * CHANGE_FACTOR呢?你想啊,火焰不是會左右晃動嗎,利用一個隨機來控制左右擺動咯。

  1. mFlameAnimator = ValueAnimator.ofFloat(0, 4).setDuration(4000); 
  2.  
  3.    mFlameAnimator.setRepeatCount(ValueAnimator.INFINITE); 
  4.  
  5.    mFlameAnimator.addUpdateListener( 
  6.  
  7.                   new ValueAnimator.AnimatorUpdateListener() { 
  8.  
  9.        @Override 
  10.  
  11.        public void onAnimationUpdate(ValueAnimator animation) { 
  12.  
  13.            float zeroToOne = (float) animation.getAnimatedValue(); 
  14.  
  15.            if (zeroToOne >= 1.0f && zeroToOne <= 1.2f) { 
  16.  
  17.                //火焰燃起 
  18.  
  19.                zeroToOne = 1.0f - 5 * (zeroToOne - 1.0f);//1-0 
  20.  
  21.                mHeight = (int) (mPreHeight * (1 - zeroToOne)); 
  22.  
  23.                mIsFiring = true
  24.  
  25.            } else if (zeroToOne >= 3.5f) { 
  26.  
  27.                if (mFlagStop) { 
  28.  
  29.                    mFlameAnimator.cancel(); 
  30.  
  31.                    return
  32.  
  33.                } 
  34.  
  35.                //火焰被吹滅 
  36.  
  37.                zeroToOne = 2 * (zeroToOne - 3.5f);//0-2 
  38.  
  39.                mTopXFactor = (int) (-20 * zeroToOne); 
  40.  
  41.                mTopYFactor = (int) (160 * zeroToOne); 
  42.  
  43. /                    mWidth = (int) (mPreWidth * (1 -zeroToOne)); 
  44.  
  45.                mIsFiring = false
  46.  
  47.            } 
  48.  
  49.        } 
  50.  
  51.    });  

在4秒的時間內,火焰進行了一系列活動,從下面隨著燈芯移上來,不斷的改變火焰的位置,分為了兩部分,火焰燃起和火焰熄滅,從代碼中可以看到,火焰燃起時mHeight慢慢變大,然后就是有了升起的過程辣,另外一個就是火焰被吹滅的時候,因為吹滅的時候火焰的高度肯定是保持之前的值,所以不需要改變,而是用了mTopXFactor和mTopYFactor這個兩個因子來控制火焰的位置。好了,既然火焰有了,蠟炬成灰淚始干啊,生命之光也該出場了。

光圈的繪制和動畫就相對簡單了

  1. mPaint.setStyle(Paint.Style.STROKE); 
  2.  
  3.            mPaint.setStrokeWidth(5); 
  4.  
  5.            mPaint.setShader(mRadialGradient); 
  6.  
  7.            canvas.drawCircle(mCurX + mWidth / 2, 
  8.  
  9.                         mCurY - mHeight / 2, mHaloRadius, mPaint); 
  10.  
  11.            canvas.drawCircle(mCurX + mWidth / 2, 
  12.  
  13.                         mCurY - mHeight / 2, mHaloRadius + 5, mPaint); 
  14.  
  15.            canvas.drawCircle(mCurX + mWidth / 2, 
  16.  
  17.                         mCurY - mHeight / 2, mHaloRadius - 5, mPaint);  

這里改變的只有一個參數,mHaloRadius也就是光圈的半徑。但是不要忘了,其他參數同時也是在改變的呢,只不過是放在了mFlameAnimator里面。

好了介紹到這Flame的介紹完了,任重而道遠啊,寫了這么多卻還沒完結,讓我想到一某位古人說過,不是我。

還未老死,就先累死

  • FireCandle

這名字有點奇怪,火燭,厲害了Word哥。前面已經介紹過ICandle了,現在來看一下他的實現類,蠟燭兩兄弟之FireCandle。

初始化照例也就不說了,來看該有的變量。

  1. private Paint mPaint;  //中心X坐標 
  2.  private int mCenterX;  //記錄初始寬 
  3.  private int mPreWidth;  //記錄初始高 
  4.  private int mPreHeight;  //蠟燭芯旋轉角 
  5.  private int mCandlewickDegrees = 0;  private Flame mFlame;  private boolean mIsFire = false;  private boolean mIsStateOnStart = false;  private boolean mIsStateOnEnd = false;  private boolean mFlagStop = false;  private ValueAnimator mCandlesAnimator; 

 命名還是挺規范的,應該一看就知道是干嘛的。

我們還是來主要看繪制和屬性動畫的配合,繪制就不看了(光速打臉)。來看動畫。

  1. mCandlesAnimator = ValueAnimator.ofFloat(0, 4).setDuration(4000); 
  2.  
  3.  mCandlesAnimator.addUpdateListener( 
  4.  
  5.                   new ValueAnimator.AnimatorUpdateListener() { 
  6.  
  7.      @Override 
  8.  
  9.      public void onAnimationUpdate(ValueAnimator animation) { 
  10.  
  11.          float zeroToOne = (float) animation.getAnimatedValue(); 
  12.  
  13.          if (zeroToOne <= 1.0f) { 
  14.  
  15.              //蠟燭芯蓄力下拉 
  16.  
  17.              mIsFire = true
  18.  
  19.              mCandleWidth = mPreWidth + (int) (zeroToOne * 40); 
  20.  
  21.              mCandleHeight = mPreHeight - (int) (zeroToOne * 30); 
  22.  
  23.              mCandlewickDegrees = (int) (-60 + (180 + 60) * zeroToOne); 
  24.  
  25.              refreshEyePosition(); 
  26.  
  27.          } else if (zeroToOne <= 2.0f) { 
  28.  
  29.              zeroToOne = zeroToOne - 1.0f; 
  30.  
  31.              //蠟燭芯上擺 
  32.  
  33.              if (zeroToOne <= 0.2f) { 
  34.  
  35.                  zeroToOne = 1.0f - 5 * zeroToOne; 
  36.  
  37.                  mIsFire = false
  38.  
  39.                  mCandleWidth = mPreWidth + (int) (zeroToOne * 40); 
  40.  
  41.                  mCandleHeight = mPreHeight - (int) (zeroToOne * 30); 
  42.  
  43.                  mCandlewickDegrees = (int) (180 * zeroToOne); 
  44.  
  45.              } else { 
  46.  
  47.                  if (mFlameStateListener != null && !mIsStateOnStart) { 
  48.  
  49.                      mFlameStateListener.flameStart(); 
  50.  
  51.                      mIsStateOnStart = true
  52.  
  53.                  } 
  54.  
  55.                  mCandleWidth = mPreWidth; 
  56.  
  57.                  mCandleHeight = mPreHeight; 
  58.  
  59.                  mCandlewickDegrees = 0; 
  60.  
  61.                  if (mFlagStop) { 
  62.  
  63.                      mCandlesAnimator.cancel(); 
  64.  
  65.                  } 
  66.  
  67.              } 
  68.  
  69.              refreshEyePosition(); 
  70.  
  71.          } else if (zeroToOne >= 3.5f) { 
  72.  
  73.              //蠟燭芯被吹歪 
  74.  
  75.              zeroToOne = 2 * (zeroToOne - 3.5f);//0-1 
  76.  
  77.              mCandlewickDegrees = (int) (-60 * zeroToOne); 
  78.  
  79.              if (mFlameStateListener != null && !mIsStateOnEnd) { 
  80.  
  81.                  mFlameStateListener.flameEnd(); 
  82.  
  83.                  mIsStateOnEnd = true
  84.  
  85.              } 
  86.  
  87.          } 
  88.  
  89.      } 
  90.  
  91.  });  

這個就過程就有點多了,但是其實一點都不復雜,,首先我們看動畫里面的小蠟燭,一開始,他來了一個變胖紅臉深蹲,所以呢mCandleWidth是變大的,mCandleHeight是變小的,后面那個燈芯隨著深蹲來了一個大角度旋轉,燈芯的如何旋轉大家也看到了,改變坐標系然后就可以了。用到了

canvas.rotate(mCandlewickDegrees, mCenterX, mCurY - mCandleHeight);這個方法。上擺過程也是一樣的,就不多說了。refreshEyePosition();這個方法是改變眼睛位置的,兩個地方都用到了所以稍微獨立出來了。注意mIsFire這個變量,沒有火焰的時候就做其他繪制,比如說紅眼睛等等。好了好了,介紹到這,小蠟燭的部分就結束了。

SecCandle

大蠟燭,帥蠟燭鎮樓,實際的繪制和小蠟燭的就差不多了,這里就不解釋了。 

 

 

 

共同繪制View和控制器

AnimControler

這個類的功能很簡單,繪制地板部分還有就是把計算后傳過來的高度寬度賦給兩支蠟燭,然后控制兩支蠟燭各自開始動畫。

  1. mFirCandle = new FirCandle(mRelativeX + mWidth / 6, mRelativeY + mHeight); 
  2.  
  3.  mFirCandle.initCandle(mFirCandleWidth, mFirCandleHeight); 
  4.  
  5.  mFirCandle.initAnim(); 
  6.  
  7.  mSecCandle = new SecCandle(mRelativeX + mWidth / 2, mRelativeY + mHeight); 
  8.  
  9.  mSecCandle.initCandle(mSecCandleWidth, mSecCandleHeight - 80); 
  10.  
  11.  mSecCandle.initAnim();  

***的***,就是我們的View了

  • CandlesAnimView
  1. //16ms刷新Canvas 
  2.  
  3.      mInvalidateAnimator = ValueAnimator.ofInt(0, 1).setDuration(16); 
  4.  
  5.      mInvalidateAnimator.setRepeatCount(ValueAnimator.INFINITE); 
  6.  
  7.      mInvalidateAnimator.addListener(new AnimatorListenerAdapter() { 
  8.  
  9.          @Override 
  10.  
  11.          public void onAnimationRepeat(Animator animation) { 
  12.  
  13.              invalidate(); 
  14.  
  15.          } 
  16.  
  17.      }); 
  18.  
  19.      mInvalidateAnimator.start();  

這個屬性動畫履行的任務就是快速的刷新界面,是Candle的動畫能夠及時顯示。

  1. @Override 
  2. protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {      super.onMeasure(widthMeasureSpec, heightMeasureSpec);      int width = measureDimension(WIDTH_DEFAULT * mDensity, 
  3.                                widthMeasureSpec);      int height = measureDimension(HEIGHT_DEFAULT *mDensity, 
  4.                                heightMeasureSpec); 
  5.     setMeasuredDimension(width, height); 
  6. }  public int measureDimension(int defaultSize, int measureSpec) {      int result;      int specMode = MeasureSpec.getMode(measureSpec);      int specSize = MeasureSpec.getSize(measureSpec);      if (specMode == MeasureSpec.EXACTLY) { 
  7.         result = specSize; 
  8.     } else { 
  9.         result = defaultSize;          if (specMode == MeasureSpec.AT_MOST) { 
  10.             result = Math.min(result, specSize); 
  11.         } 
  12.     }      return result; 
  13. }  @Override 
  14. protected void onDraw(Canvas canvas) {      if (!mIsInit) { 
  15.         initConfig(); 
  16.         mIsInit = true
  17.     } 
  18.     mAnimControler.drawMyView(canvas); 

 可以看到***在view里面調用了我們的控制器,把cavas傳過去了。

***的tip:大家有沒有發現每個動畫的duration都是一樣的。

三、***

好了至此,本來一個簡單的view自定義被我說了這么多。初次在簡書上寫,望大家多支持支持。

希望大家有什么建議和意見都可以提出。望斧正。

責任編輯:龐桂玉 來源: 安卓巴士Android開發者門戶
相關推薦

2022-08-29 17:39:53

應用開發css動畫

2016-04-01 09:52:30

Autolayout約束動畫ios

2014-09-10 16:08:53

蘋果發布會iPhone6

2017-05-02 09:51:39

QQ空間

2021-06-01 17:03:03

辦公

2020-09-23 16:05:42

Python手繪圖表編程語言

2009-12-09 09:43:27

2009-12-09 09:45:35

袁萌Linux

2014-11-05 09:30:18

萌碼

2009-12-09 17:06:15

小Linux

2009-09-23 10:23:49

2014-10-10 10:13:52

91助手

2009-12-01 08:44:09

袁萌Linux操作系統

2014-03-06 13:26:49

動畫資源Animation R

2022-03-09 09:00:41

SwiftUI視圖生成器Swift

2022-02-18 09:04:22

動畫SwiftUI工具:

2022-03-01 09:01:56

SwiftUI動畫進階Canvas

2022-02-23 12:23:28

協議動畫SwiftUI

2014-07-15 10:23:10

Android補間動畫

2011-07-25 09:18:10

Linux 3.0袁萌
點贊
收藏

51CTO技術棧公眾號

久久精品国产69国产精品亚洲| 一本色道久久综合亚洲精品按摩| 91九色视频在线观看| 久久中文字幕在线观看| 天堂一区二区三区四区| 欧美午夜电影一区| 福利视频一区二区三区四区| 邻居大乳一区二区三区| 国产综合成人久久大片91| 97国产精品人人爽人人做| 久久中文字幕精品| 99精品国产一区二区三区2021 | 成年人午夜剧场| 九色丨蝌蚪丨成人| 欧美日本高清视频在线观看| www.av毛片| 91在线品视觉盛宴免费| a美女胸又www黄视频久久| 国产精品青青在线观看爽香蕉 | 国产日韩1区| 日韩中文字幕av| 中文字幕免费在线播放| 成人自拍视频| 欧美日韩亚州综合| 那种视频在线观看| av资源在线| ...av二区三区久久精品| 欧洲精品国产| 婷婷五月综合激情| 国产制服丝袜一区| 国产精品三级久久久久久电影| 国产精品6666| 中文字幕一区二区三区欧美日韩 | 91精品小视频| 成人爽a毛片免费啪啪红桃视频| 欧美日韩在线播放三区| 国产女女做受ⅹxx高潮| 国产天堂在线播放视频| 国产精品国产精品国产专区不蜜| 欧美第一黄网| 午夜激情小视频| 成人涩涩免费视频| 亚洲自拍av在线| 91精品人妻一区二区三区果冻| 男人的天堂亚洲| 91国产美女在线观看| 免费网站看av| 韩日视频一区| 欧美激情一区二区三区久久久| 精品亚洲乱码一区二区| 欧美国产偷国产精品三区| 中文欧美在线视频| 无码少妇一区二区| 不卡在线一区| 日韩综合中文字幕| 欧美xxxooo| 国产精品传媒精东影业在线 | 久久久国产精品一区二区三区| 性做久久久久久久久久| 国产丶欧美丶日本不卡视频| 亚洲最大福利网| 亚洲欧美强伦一区二区| 粉嫩av亚洲一区二区图片| 国产精品欧美久久| 五十路在线视频| 国产亚洲美州欧州综合国| 日本在线高清视频一区| 99riav在线| 91精品视频免费在线观看| 99国产精品久久一区二区三区| 欧美成人性战久久| 一级少妇精品久久久久久久| 久久夜色精品国产噜噜av小说| 亚洲国产欧美一区二区丝袜黑人| 性色av蜜臀av色欲av| 精品国产精品| 日韩在线观看免费av| 日韩欧美国产成人精品免费| 欧美三级小说| 欧美性视频网站| 亚洲怡红院av| 国产91丝袜在线播放九色| 精品网站在线看| 成年人视频在线看| 亚洲精品国产视频| 欧美一区二区三区爽大粗免费| 91国内外精品自在线播放| 3d动漫精品啪啪一区二区竹菊| 国产女主播在线播放| 西野翔中文久久精品国产| 在线视频中文亚洲| 久久久久久久9999| 日日夜夜免费精品视频| 亚洲自拍在线观看| 免费在线国产| 亚洲乱码中文字幕综合| 青青青在线播放| 国产精品一站二站| 亚洲色图综合久久| 久久机热这里只有精品| 日韩中文字幕91| 成人在线资源网址| 深夜福利视频在线观看| 亚洲欧美偷拍另类a∨色屁股| 日韩小视频在线播放| 视频91a欧美| 日韩精品免费观看| 免费一级片视频| 蜜臀va亚洲va欧美va天堂| 国产区一区二区| 成人在线影视| 欧美在线观看一二区| 青青草视频网站| 欧美一区影院| 国产精品美女免费看| 91香蕉国产在线观看| 99视频在线观看免费| 久久伊人蜜桃av一区二区| 91麻豆天美传媒在线| 日本欧美不卡| 亚洲人成五月天| 日韩xxxxxxxxx| 国产精品白丝jk黑袜喷水| 亚洲国产精品久久久久久女王| 色女人在线视频| 在线播放视频一区| 免费看黄色三级| 香蕉久久久久久久av网站| 国产成人一区二区三区免费看| 日本在线免费网| 在线观看日韩毛片| 国产ts在线播放| 国产深夜精品| 国产一区二区在线网站| 欧美野外wwwxxx| 欧美一级在线免费| 久久人妻无码aⅴ毛片a片app| 日韩精品一二三四| 日本视频一区在线观看| 亚洲午夜天堂| 亚洲精品天天看| 日日夜夜综合网| 91免费观看视频在线| 欧美激情 国产精品| 欧美调教在线| 精品久久电影| 日韩在线欧美在线国产在线| 久久精品国产亚洲av麻豆蜜芽| 久久只精品国产| 欧美牲交a欧美牲交aⅴ免费真 | 欧美精品一区二区三区四区五区 | 国产精品你懂得| lutube成人福利在线观看| 欧美最新大片在线看| 乐播av一区二区三区| 久久蜜桃精品| 亚洲国产一区二区三区在线| 91tv亚洲精品香蕉国产一区| 在线视频欧美性高潮| 亚洲一卡二卡在线| 国产精品美女久久久久久久久| 亚洲另类第一页| 91成人免费| 97人人香蕉| 成年人在线网站| 日韩高清欧美高清| youjizz在线视频| 中文字幕乱码日本亚洲一区二区 | 欧美激情亚洲天堂| 红杏一区二区三区| 茄子视频成人在线| 色综合久久影院| 欧美一区二区三区在| 久久精品这里有| 久久久国产综合精品女国产盗摄| 天天操天天爽天天射| 99久久久久国产精品| 91久久精品国产91久久性色tv| 波多野结衣乳巨码无在线观看| 亚洲精品一区中文| 在线视频你懂得| 一区二区三区小说| 成年人网站免费在线观看| 日本不卡高清视频| 免费看日b视频| 九九亚洲精品| 999国产视频| 色婷婷综合久久久中字幕精品久久| 综合国产在线观看| 国产91久久久| 欧美影院一区二区| 国产亚洲欧美精品久久久www| www日韩大片| 乳色吐息在线观看| 久久中文精品| 真实国产乱子伦对白视频| 嫩草一区二区三区| 97超级碰碰| 成人免费av电影| 久久久久久美女| 日韩毛片久久久| 日韩大陆欧美高清视频区| 亚洲综合精品视频| 黑人巨大精品欧美一区二区三区 | 91精品国产综合久久久久久久久久| 国产亚洲欧美精品久久久久久| 亚洲国产精品成人综合 | 99re只有精品| 色嗨嗨av一区二区三区| 国产性70yerg老太| 亚洲品质自拍视频| 水蜜桃av无码| 国产精品原创巨作av| 91日韩视频在线观看| 一区二区三区四区五区精品视频| 黄色一级视频播放| 欧美一区二区三| 久久精品国产精品青草色艺| 国产精品亚洲欧美一级在线| 国产精品成人aaaaa网站| av在线视屏| 国内免费久久久久久久久久久 | 91精品国产高清| 自由的xxxx在线视频| 中文字幕久精品免费视频| 亚洲色图21p| 亚洲精品大尺度| 好吊色在线观看| 日韩视频永久免费| 国产欧美久久久| 91麻豆精品国产无毒不卡在线观看| 日本黄色中文字幕| 色综合色狠狠天天综合色| 99精品视频99| 精品成人国产在线观看男人呻吟| a级片在线观看免费| 亚洲激情一二三区| 日韩va亚洲va欧美va清高| 中文字幕一区二区三区四区不卡| 国产在线综合视频| 中文在线免费一区三区高中清不卡| 亚洲熟妇无码av| 91视视频在线观看入口直接观看www | 麻豆一区产品精品蜜桃的特点| 亚洲三级在线观看| 亚洲 欧美 变态 另类 综合| 日韩一区欧美一区| caoporn91| 亚洲资源中文字幕| 久久在线视频精品| 五月婷婷激情综合网| 日韩美女视频网站| 韩曰欧美视频免费观看| 国产一级淫片a视频免费观看| 欧美日韩一区二区精品| 黄色av一级片| 欧美日韩情趣电影| 国产一区二区三区在线观看| 欧美一区二区日韩一区二区| jlzzjlzzjlzz亚洲人| 精品久久国产97色综合| 图片区 小说区 区 亚洲五月| 亚洲精品一区久久久久久| 大胆av不用播放器在线播放| 中文字幕久热精品在线视频 | 91高清视频在线免费观看| 在线能看的av网址| 国产精品一区二区三区免费视频| 福利一区视频| 粉嫩高清一区二区三区精品视频 | 国产精品 欧美精品| 深田咏美中文字幕| 久久久久国产精品麻豆ai换脸 | 91精品视频网站| 成人av婷婷| 欧美性大战久久久久| 久久在线播放| 黄色成人在线看| 青青青伊人色综合久久| 麻豆免费在线观看视频| 91麻豆成人久久精品二区三区| 夫妇交换中文字幕| 亚洲综合成人网| 亚洲大尺度在线观看| 制服视频三区第一页精品| 人妻中文字幕一区| 色妞一区二区三区| www视频在线观看| 成人福利视频网| 日本一区福利在线| 在线无限看免费粉色视频| 夜夜嗨av一区二区三区网站四季av| 中文字幕网av| 成人久久视频在线观看| 我想看黄色大片| 亚洲成av人综合在线观看| 日韩国产亚洲欧美| 精品国产髙清在线看国产毛片| av电影在线观看网址| 久久欧美在线电影| 91精品国产自产观看在线| 久久精品日产第一区二区三区乱码| 99久久99久久精品国产片果冰| 日本精品一区在线观看| 国产综合一区二区| 少妇精品无码一区二区免费视频| 亚洲卡通动漫在线| 中文字幕91爱爱| 精品亚洲一区二区三区四区五区 | 成人一区不卡| 97在线国产视频| 免费成人av资源网| 爱爱的免费视频| 亚洲不卡在线观看| 国产精品无码天天爽视频| 夜夜嗨av色综合久久久综合网| a'aaa级片在线观看| 91免费视频网站| 全球成人免费直播| av网址在线观看免费| www.激情成人| 国产亚洲精久久久久久无码77777| 欧美精品色综合| 幼a在线观看| 国产精品99久久久久久人| 天天躁日日躁成人字幕aⅴ| 国产精品久久久久久久久电影网| 久久精品国产99国产| 国产18无套直看片| 色哟哟日韩精品| 免费在线性爱视频| 欧美一级在线亚洲天堂| 凹凸成人在线| 男人天堂手机在线视频| 成人综合在线网站| 欧美日韩偷拍视频| 国产一区二区三区无遮挡| av在线播放一区| 日本在线观看一区| 亚洲免费婷婷| 久久人人爽人人爽人人片| 午夜精品久久久久久久久久久| 亚洲AV无码一区二区三区性| 欧美伦理91i| 99a精品视频在线观看| 亚洲国产精品无码av| 成人国产精品视频| 国产一卡二卡在线播放| 精品免费国产一区二区三区四区| 丁香高清在线观看完整电影视频 | 美日韩中文字幕| 国产l精品国产亚洲区久久| 26uuu国产电影一区二区| 国产精品久免费的黄网站| 亚洲美女中文字幕| 欧美亚洲大片| 在线不卡日本| 国产成人亚洲综合a∨猫咪| 麻豆影视在线播放| 亚洲国产精品99| 久久青青视频| 一区二区三区四区在线视频| 精品中文av资源站在线观看| 91视频青青草| 精品国产一区二区三区不卡| 免费不卡av| 欧美亚洲国产免费| 男人的j进女人的j一区| 99视频只有精品| 亚洲精品久久久久久久久| 色综合一本到久久亚洲91| 亚洲一区二区三区色| 国产**成人网毛片九色 | 欧美日韩在线视频免费观看| 国产精品久久久久久久久久久久冷 | 日韩有码在线电影| 午夜日韩影院| 久久久久久久久久久久久国产精品| 中文字幕精品—区二区四季| 国产乱人乱偷精品视频| 午夜精品理论片| 青青草原综合久久大伊人精品 | 中文字幕在线播放日韩| 久久国产精品久久久| 欧美国产极品| 午夜免费看视频| 亚洲成人av电影| www.亚洲资源| 国产精品免费一区二区三区| 日韩va亚洲va欧美va久久| 国产亚洲精品码| 中文字幕日韩高清| 好吊妞国产欧美日韩免费观看网站| 免费激情视频在线观看| 亚洲精品乱码久久久久久久久| 青青草免费观看免费视频在线| 亚洲www在线观看| 毛片一区二区| 精品一区二区三区人妻| 在线亚洲午夜片av大片|