日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android•Lottie动画库填坑记

發(fā)布時(shí)間:2025/3/19 Android 71 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android•Lottie动画库填坑记 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

1. 入坑背景

由于從事直播軟件開發(fā)的緣故,本猿在版本迭代過(guò)程中一期不落的接觸到各式各樣動(dòng)畫效果。最早的時(shí)候,苦逼的用Android原生動(dòng)畫做直播間全屏禮物,反復(fù)的看著美工給的Flash效果圖,不斷的拼湊素材圖片,調(diào)整控制動(dòng)畫播放的屬性值,各個(gè)動(dòng)畫代碼都很類似,但卻無(wú)法套用,一連兩三天下來(lái),基本上腦海中除了動(dòng)畫就一片空白...不過(guò)后來(lái)采用spine禮物框架以后,也就告別這樣的悲慘人生。然而就在上一版本中,產(chǎn)品因?yàn)?..的原因,讓不同的用戶進(jìn)入房間有不一樣的效果,其中就包括文字背景帶粒子效果,對(duì)于這樣的效果,Android原生動(dòng)畫顯然無(wú)能為力,如果采用幀動(dòng)畫,由于大量素材文件的引入帶來(lái)最直接的不良影響就是安裝包體積過(guò)大。經(jīng)過(guò)評(píng)估之后,決定使用三方動(dòng)畫框架,從服務(wù)器下載動(dòng)畫資源,在特定時(shí)間對(duì)不同資源文件進(jìn)行播放,最終采用相對(duì)比較成熟的Lottie框架。

2. 踩坑準(zhǔn)備

熟悉一個(gè)新的框架最快的方式就是查看官方文檔,因?yàn)楣俜轿臋n中一般都會(huì)給出一個(gè)Demo,果不其然,Lottie也是!文檔的閱讀量不是很大,通篇下來(lái)介紹了:

  • 播放本地Assets目錄下的Json動(dòng)畫文件
  • 通過(guò)Json數(shù)據(jù)播放動(dòng)畫
  • 如何對(duì)動(dòng)畫進(jìn)行監(jiān)聽以及動(dòng)畫進(jìn)度調(diào)節(jié)
  • Lottie動(dòng)畫數(shù)據(jù)的預(yù)加載和緩存
  • 為Assets目錄下的Json動(dòng)畫文件配置動(dòng)畫所需要的素材

3. 開始入坑

然而,他介紹了這么多,并沒(méi)有一款適合我的。因?yàn)榉?wù)器下發(fā)不是簡(jiǎn)單的Json數(shù)據(jù),是一個(gè)動(dòng)畫壓縮包,里面包括了動(dòng)畫文件和播放動(dòng)畫需要的素材文件,而且解壓后的文件也不在Asset目錄下。于是,只好跟蹤animationView.setAnimation("hello-world.json")源碼,看看最終到底做了什么事!

public void setAnimation(String animationName) {setAnimation(animationName, defaultCacheStrategy);} 復(fù)制代碼

一個(gè)參數(shù)調(diào)用兩個(gè)參數(shù)同名方法,只好接著往下看!

public void setAnimation(final String animationName, final CacheStrategy cacheStrategy) {this.animationName = animationName;if (weakRefCache.containsKey(animationName)) {WeakReference<LottieComposition> compRef = weakRefCache.get(animationName);if (compRef.get() != null) {setComposition(compRef.get());return;}} else if (strongRefCache.containsKey(animationName)) {setComposition(strongRefCache.get(animationName));return;}this.animationName = animationName;lottieDrawable.cancelAnimation();cancelLoaderTask();compositionLoader = LottieComposition.Factory.fromAssetFileName(getContext(), animationName,new OnCompositionLoadedListener() {@Overridepublic void onCompositionLoaded(LottieComposition composition) {if (cacheStrategy == CacheStrategy.Strong) {strongRefCache.put(animationName, composition);} else if (cacheStrategy == CacheStrategy.Weak) {weakRefCache.put(animationName, new WeakReference<>(composition));}setComposition(composition);}});} 復(fù)制代碼

從這里可以看到官方文檔中說(shuō)的緩存,包括強(qiáng)引用緩存,弱引用緩存,和無(wú)緩存模式,而且知道Json動(dòng)畫文件最終會(huì)轉(zhuǎn)化為Composition對(duì)象,而Compostion對(duì)象是通過(guò)LottieComposition.Factory.fromAssetFileName(...)的方法異步獲取的,于是我們只好接著往下跟蹤。

public static Cancellable fromAssetFileName(Context context, String fileName,OnCompositionLoadedListener loadedListener) {InputStream stream;try {stream = context.getAssets().open(fileName);} catch (IOException e) {throw new IllegalStateException("Unable to find file " + fileName, e);}return fromInputStream(context, stream, loadedListener);} 復(fù)制代碼

看到這里我們這就明白,當(dāng)初傳入的文件名,最終還是通過(guò)getAssets().open(fileName)的方法,以流的方式進(jìn)行處理了,于是我們可以這樣加載放在其他目錄下的Json動(dòng)畫文件。

public static void loadAnimationByFile(File file, final OnLoadAnimationListener listener) {if (file == null || !file.exists()) {if (listener != null) {listener.onFinished(null);}return;}FileInputStream fins = null;try {fins = new FileInputStream(file);LottieComposition.Factory.fromInputStream(GlobalContext.getAppContext(), fins, new OnCompositionLoadedListener() {@Overridepublic void onCompositionLoaded(LottieComposition composition) {if (listener != null) {listener.onFinished(composition);}}});} catch (IOException e) {e.printStackTrace();if (listener != null) {listener.onFinished(null);}if (fins != null) {try {fins.close();} catch (IOException e1) {e1.printStackTrace();}}}} 復(fù)制代碼

異步的方式獲取Composition對(duì)象,因?yàn)椴皇褂胹etAnimation(final String animationName, final CacheStrategy cacheStrategy)方法,所以我們沒(méi)法使用框架提供的緩存,為了下次播放時(shí)不需要重新解析動(dòng)畫文件,使動(dòng)畫的加載速度更快,我們也需要重新做一套緩沖處理,如下

LocalLottieAnimUtil.loadAnimationByFile(animFile, new LocalLottieAnimUtil.OnLoadAnimationListener() {@Overridepublic void onFinished(LottieComposition lottieComposition) {if (lottieComposition != null) {mCenter.putLottieComposition(id, lottieComposition); // 使用} else {GiftFileUtils.deleteFile(getAnimFolder(link)); //刪除動(dòng)畫文件目錄,省的下次加載依然失敗,而是重新去下載資源壓縮包}public class EnterRoomResCenter {private SparseArray<LottieComposition> lottieCompositions = new SparseArray<>(); //緩存Compositionpublic void putLottieComposition(int id, LottieComposition composition) {lottieCompositions.put(id, composition);}public LottieComposition getAnimComposition(int id) {return mCenter.getLottieComposition(id);} } 復(fù)制代碼

完成了Json動(dòng)畫文件的加載,接下來(lái)就是播放動(dòng)畫。正如源碼方法中 setAnimation(final String animationName, final CacheStrategy cacheStrategy) 一樣,我們也需要對(duì)LottieAnimationView進(jìn)行setComposition(composition)處理,然后調(diào)用LottieAnimationView.playAnimation()就可以進(jìn)行動(dòng)畫播放了,于是我這樣做了:

public static void playAnimation(LottieAnimationView animationView,LottieComposition composition) {animationView.setComposition(composition);animationView.playAnimation();} 復(fù)制代碼

想想這個(gè)需求馬上就要搞定,于是我抿抿嘴偷偷笑了,這也太輕松了吧!于是端起茶杯去接了杯水,并運(yùn)行了項(xiàng)目,準(zhǔn)備回來(lái)看到那絢麗的動(dòng)畫。然而,事與愿違,等待我的是一片血紅的“大姨媽”。

java.lang.IllegalStateException: You must set an images folder before loading an image. Set it with LottieComposition#setImagesFolder or LottieDrawable#setImagesFolder 復(fù)制代碼

看到這個(gè)錯(cuò)誤,想起官方文檔上面有說(shuō),如何為動(dòng)畫配置播放動(dòng)畫所需要的素材,而且錯(cuò)誤提示也特別的明顯,看了看給的資源包的目錄,似乎發(fā)現(xiàn)了什么!于是我按照官方《為Assets目錄下的Json動(dòng)畫文件設(shè)置播放動(dòng)畫所需要的資源》一樣,改了一下代碼:

public static void playAnimation(LottieAnimationView animationView,String imageFolder, LottieComposition composition) {animationView.setComposition(composition);animationView.setImageAssetsFolder(imageFolder); // 新添加的animationView.playAnimation();} 復(fù)制代碼

想著異常信息都提示這么明顯了,而且官方文檔給的模板也是這樣寫的,我更加確定這次動(dòng)畫播放絕對(duì)的沒(méi)有問(wèn)題。然而,動(dòng)畫最終還是沒(méi)有播放出來(lái)!沒(méi)辦法,只好繼續(xù)翻源碼,既然Assets目錄下setImageAssetsFolder(String folder)能生效,那我們只好從這個(gè)方法切入,看看folder變量最終是怎么樣被使用的。

@SuppressWarnings("WeakerAccess") public void setImageAssetsFolder(String imageAssetsFolder) {lottieDrawable.setImagesAssetsFolder(imageAssetsFolder);} 復(fù)制代碼

沒(méi)有什么頭緒只好繼續(xù)往下看:

@SuppressWarnings("WeakerAccess") public void setImagesAssetsFolder(@Nullable String imageAssetsFolder) {this.imageAssetsFolder = imageAssetsFolder;} 復(fù)制代碼

這個(gè)變量被設(shè)置成類屬性了,那么我們只需要在這個(gè)類下搜索怎么樣被使用就可以馬上定位出原因,發(fā)現(xiàn)有這么一行:

imageAssetBitmapManager = new ImageAssetBitmapManager(getCallback(),imageAssetsFolder, imageAssetDelegate, composition.getImages());} 復(fù)制代碼

我擦,變量被傳遞到一個(gè)ImageAssetBitmapManager對(duì)象里面去了,只好進(jìn)這個(gè)類繼續(xù)跟蹤,最終定位到這樣一個(gè)方法:

Bitmap bitmapForId(String id) {Bitmap bitmap = bitmaps.get(id);if (bitmap == null) {LottieImageAsset imageAsset = imageAssets.get(id);if (imageAsset == null) {return null;}if (assetDelegate != null) {bitmap = assetDelegate.fetchBitmap(imageAsset);bitmaps.put(id, bitmap);return bitmap;}InputStream is;try {if (TextUtils.isEmpty(imagesFolder)) {throw new IllegalStateException("You must set an images folder before loading an image." +" Set it with LottieComposition#setImagesFolder or LottieDrawable#setImagesFolder");}is = context.getAssets().open(imagesFolder + imageAsset.getFileName());} catch (IOException e) {Log.w(L.TAG, "Unable to open asset.", e);return null;}BitmapFactory.Options opts = new BitmapFactory.Options();opts.inScaled = true;opts.inDensity = 160;bitmap = BitmapFactory.decodeStream(is, null, opts);bitmaps.put(id, bitmap);}return bitmap;} 復(fù)制代碼

播放動(dòng)畫所需要的圖片資源都通過(guò)這個(gè)方法獲取,傳入一個(gè)圖片文件名稱,然后通過(guò)流獲取Bitmap對(duì)象并返回。這里需要介紹一下: 如果Json動(dòng)畫文件使用了圖片素材,里面的Json數(shù)據(jù)必然會(huì)聲明該圖片文件名。在Composition.Factory進(jìn)行解析為Composition時(shí),里面使用的圖片都以鍵值對(duì)的方式存放到Composition的 private final Map<String, LottieImageAsset> images = new HashMap<>()中,LottieAnimationView.setCompostion(Compostion)最終落實(shí)到LottieDrawable.setCompostion(Compostion),LottieDrawable為了獲取動(dòng)畫里面的bitmap對(duì)象,Lottie框架封裝了ImageAssetBitmapManager對(duì)象,在LottieDrawable中創(chuàng)建,將圖片的獲取轉(zhuǎn)移到imageAssetBitmapManager 中,并暴露public Bitmap bitmapForId(String id)的方法。

LottieImageAsset imageAsset = imageAssets.get(id); 復(fù)制代碼

上面的 bitmapForId(String id) 方法體中有這么一行代碼,如上,之前Json動(dòng)畫文件解析的圖片都存放到imageAssets中,id是當(dāng)前需要加載的圖片素材名,通過(guò)get獲取到對(duì)應(yīng)的LottieImageAsset對(duì)象,其實(shí)里面也就包裝了該id值,做這層包裝可能為了以后方便擴(kuò)展吧!

if (assetDelegate != null) {bitmap = assetDelegate.fetchBitmap(imageAsset);bitmaps.put(id, bitmap);return bitmap;}...is = context.getAssets().open(imagesFolder + imageAsset.getFileName());bitmap = BitmapFactory.decodeStream(is, null, opts);return bitmap;...復(fù)制代碼

同樣從 bitmapForId(String id) 方法體中提取出如上代碼,從上面可以看出如果assetDelegate == null,它就會(huì)從Asset的imagesFolder目錄下找素材文件。因?yàn)橹拔覀儾](méi)有設(shè)置過(guò)assetDelegate,而且我們的素材并不是在Asset的imagesFolder目錄下,所以獲取不到bitmap對(duì)象,動(dòng)畫無(wú)法播放也是情有可原的,不斷的反向追溯assetDelegate來(lái)源,找到LottieAnimationView.setImageAssetDelegate(ImageAssetDelegate assetDelegate)方法,所以調(diào)整之前的代碼,如下:

public static ImageAssetDelegate imageAssetDelegate = new ImageAssetDelegate() {@Overridepublic Bitmap fetchBitmap(LottieImageAsset asset) {String filePath = currentImgFolder + File.separator + asset.getFileName();return BitmapFactory.decodeFile(filePath, opts);}}public static void playAnimation(LottieAnimationView animationView, String imageFolder, ImageAssetDelegate imageAssetDelegate, LottieComposition composition) {if (animationView == null || composition == null) {return;}animationView.setComposition(composition);animationView.setImageAssetsFolder(imageFolder);animationView.setImageAssetDelegate(imageAssetDelegate);animationView.playAnimation();} 復(fù)制代碼

到現(xiàn)在為此,這個(gè)動(dòng)畫才能播放出來(lái),這個(gè)地方有一點(diǎn)比較坑的就是ImageAssetDelegate的創(chuàng)建:

public static ImageAssetDelegate imageAssetDelegate = new ImageAssetDelegate() {@Overridepublic Bitmap fetchBitmap(LottieImageAsset asset) {String filePath = currentImgFolder + File.separator + asset.getFileName();return BitmapFactory.decodeFile(filePath, opts);}} 復(fù)制代碼

每次使用的時(shí)候,我們都需要有這樣一個(gè)currentImgFolder 變量,維護(hù)這個(gè)文件所在的父目錄的位置,其實(shí)框架大可以在ImageAssetBitmapManager中這樣調(diào)用,將之前我們用setImageFolder(String folder)又重新的回調(diào)回來(lái)。

if (assetDelegate != null) {bitmap = assetDelegate.fetchBitmap(imagesFolder, imageAsset); // imagesFolder是新加bitmaps.put(id, bitmap);return bitmap;} 復(fù)制代碼

4. Lottie坑點(diǎn)總結(jié)

  • 在動(dòng)畫json文件中,有如下類似的數(shù)據(jù),其中W 和 H字段聲明了整個(gè)動(dòng)畫的輸出大小,你需要確保你使用的LottieAnimationVIew的寬高比和這個(gè)一致。
{"v":"4.9.0","fr":25,"ip":0,"op":50,"w":1242,"h":128,"nm":"WWW","ddd":0,"assets": .... 復(fù)制代碼
  • 播放本地動(dòng)畫文件展示的動(dòng)畫偏小或偏大

注意ImageAssetDelegate的fetBitmap()代碼中indensity屬性的設(shè)置

@Overridepublic Bitmap fetchBitmap(LottieImageAsset asset) {String filePath = currentImgFolder + File.separator + asset.getFileName();BitmapFactory.Options opts = new BitmapFactory.Options();opts.inDensity = 110; //請(qǐng)留意這個(gè)值的設(shè)定return BitmapFactory.decodeFile(filePath, opts); //這里還有坑,請(qǐng)往下接著看} 復(fù)制代碼
  • Lottie庫(kù)回收素材圖片bitmap引發(fā)的空指針問(wèn)題 (1) 先看看Lottie對(duì)素材圖片進(jìn)行緩存的方法:
Bitmap bitmapForId(String id) {...if (assetDelegate != null) {bitmap = assetDelegate.fetchBitmap(imageAsset);bitmaps.put(id, bitmap); //將Bitmap進(jìn)行存儲(chǔ),可能Bitmap對(duì)象為nullreturn bitmap;}...BitmapFactory.Options opts = new BitmapFactory.Options();opts.inScaled = true;opts.inDensity = 160;bitmap = BitmapFactory.decodeStream(is, null, opts);bitmaps.put(id, bitmap); //將Bitmap進(jìn)行存儲(chǔ),可能Bitmap對(duì)象為null}return bitmap;} 復(fù)制代碼

(2) 再看看Lottie對(duì)緩存圖片的回收處理:

void recycleBitmaps() {Iterator<Map.Entry<String, Bitmap>> it = bitmaps.entrySet().iterator();while (it.hasNext()) {Map.Entry<String, Bitmap> entry = it.next();entry.getValue().recycle();it.remove();}} 復(fù)制代碼

(3) 結(jié)論: 前后對(duì)比,有沒(méi)有發(fā)現(xiàn)Lottie對(duì)緩存的素材圖片bitmap對(duì)象并沒(méi)有做判空處理,就直接回收了(Version 1.5.3)。

解決辦法: 如果是加載本地素材圖片(非Assets目錄)可以采用如下辦法:

public Bitmap fetchBitmap(LottieImageAsset asset) {String filePath = currentImgFolder + File.separator + asset.getFileName();Bitmap bitmap = BitmapFactory.decodeFile(filePath, opts);if (bitmap == null) {bitmap = Bitmap.createBitmap(1, 1, Bitmap.Config.ALPHA_8);}return bitmap;} 復(fù)制代碼

5. 使用總結(jié)

  • 播放放置在Asset目錄下的動(dòng)畫文件

設(shè)置播放文件: setAnimation("文件名") 如果動(dòng)畫文件帶素材: setImageAssetsFolder("文件夾名")

  • 播放系統(tǒng)目錄下的動(dòng)畫文件

異步獲取Compostion對(duì)象: LottieComposition.Factory.fromInputStream() 設(shè)置播放的素材: setComposition(composition) 如果動(dòng)畫文件帶素材: setImageAssetsFolder("文件夾名") + setImageAssetDelegate(imageAssetDelegate)

轉(zhuǎn)載于:https://juejin.im/post/5b8a2fc1e51d4559a81eec56

總結(jié)

以上是生活随笔為你收集整理的Android•Lottie动画库填坑记的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

91天堂素人约啪 | 免费视频区 | 五月天堂色 | 99久国产 | 99热精品视 | 国产中文字幕大全 | 精品 激情 | 色国产在线 | 天天做天天爱天天综合网 | 亚洲日本激情 | 在线观看一区二区精品 | 深爱五月激情五月 | 日本一区二区三区免费观看 | 超碰在线中文字幕 | 亚洲视频 在线观看 | 亚洲一二区视频 | 在线 影视 一区 | 2023亚洲精品国偷拍自产在线 | 亚洲一区二区麻豆 | 麻豆91网站 | 在线综合 亚洲 欧美在线视频 | 久久精品站 | 国产专区精品视频 | 丁香六月天 | 一级片免费观看视频 | 日韩www在线 | 天天添夜夜操 | 成 人 黄 色 视频 免费观看 | 97超碰中文 | 日韩精品在线视频 | 五月婷婷伊人网 | 日韩久久久久久久久 | 欧美一级片在线观看视频 | 久久久久国产一区二区 | 亚洲黄电影| 日韩com| 91精品对白一区国产伦 | 久久久久女人精品毛片九一 | 操操操干干干 | 91成人欧美 | 久久论理 | 在线观看a视频 | 免费国产一区二区 | 9999在线观看 | 精品在线免费视频 | 亚洲精品乱码久久久久久蜜桃91 | 日韩成人免费在线观看 | 国产亚洲欧美日韩高清 | 久久精品99国产精品日本 | 五月天婷婷综合 | 国产一区久久 | 日韩欧美高清一区二区三区 | 亚洲美女视频在线 | 日本一区二区三区免费观看 | 欧美性生活小视频 | 午夜国产福利视频 | 激情狠狠干| 992tv成人免费看片 | 日韩在线视频不卡 | 精品九九九九 | av一级黄| 菠萝菠萝在线精品视频 | 丁香婷婷激情网 | 欧美日本啪啪无遮挡网站 | 国内久久久 | 91天堂影院 | av中文天堂 | 精品99在线 | 亚洲国产97在线精品一区 | 久久99热精品这里久久精品 | 日韩中文字幕在线 | 精品久久国产精品 | 人人爽人人爽人人片av免 | 天天操天天摸天天爽 | 亚洲欧美日韩精品久久奇米一区 | 亚洲国产成人高清精品 | 精品伊人久久久 | 91精品91| 欧美日韩在线观看一区二区 | 亚洲国产理论片 | 91九色在线 | 久久久久一区 | 美女免费网视频 | 国产成人精品在线 | 国产精品自在欧美一区 | 日日操操操 | 日韩高清成人在线 | 中文字幕精品一区二区三区电影 | 亚洲欧美成人网 | 日日色综合 | 在线 影视 一区 | 狠色狠色综合久久 | www天天干com | 亚洲日本国产精品 | 超碰在线cao | 啪啪凸凸| 国产黄色高清 | 97夜夜澡人人双人人人喊 | 免费在线观看91 | 精品a级片 | 久久久久久久久久久免费 | 精品电影一区二区 | 色婷婷六月天 | 免费裸体视频网 | 色婷婷婷 | 色婷婷电影网 | 少妇精品久久久一区二区免费 | 国产一级免费片 | 欧美精品在线观看免费 | 久久精品999 | 久久精品五月 | 在线观看av片| 天天操天天爱天天干 | 久久香蕉电影 | 操久久网| 激情综合交 | 丁香五月亚洲综合在线 | 色综合天天天天做夜夜夜夜做 | 久久久成人精品 | 亚洲视频免费在线 | 27xxoo无遮挡动态视频 | 日韩免费一区二区在线观看 | 午夜视频在线瓜伦 | 91传媒免费观看 | 国产精品一区二区三区在线 | 国产亲近乱来精品 | 亚洲资源视频 | 手机av电影在线观看 | 亚洲精品视频在线观看免费 | 日韩在线激情 | 国产免费亚洲高清 | 精品亚洲男同gayvideo网站 | 色偷偷人人澡久久超碰69 | 黄色大全免费观看 | 免费视频黄色 | 免费成人av网站 | 日本公妇在线观看 | 久久伊人综合 | 丝袜美腿一区 | 国产免费大片 | 欧美激情综合网 | 天天搞天天干 | 中文字幕av在线免费 | 91中文字幕永久在线 | 中文字幕中文字幕 | 欧美二区三区91 | 婷婷丁香九月 | 国产精品不卡在线观看 | 99精品视频免费看 | 国产精品嫩草在线 | 国内精品久久久久影院日本资源 | 天天干天天做 | 永久免费av在线播放 | 精品美女久久久久 | 国产一区av在线 | 在线观看免费日韩 | 天天干天天干天天色 | 久久草在线免费 | 在线免费观看涩涩 | 久操免费视频 | 午夜精品视频免费在线观看 | 国产剧情一区二区在线观看 | 在线观看亚洲成人 | 一区二区精品久久 | 超碰av在线播放 | 亚洲黄色成人网 | 午夜精品久久久99热福利 | 国产视频精选在线 | 久久免费在线观看 | 国产精品小视频网站 | www.久久免费视频 | 亚洲视频在线免费看 | 色婷婷狠狠五月综合天色拍 | 欧美精选一区二区三区 | 久久艹影院 | 婷婷四房综合激情五月 | 国产一级性生活视频 | 国产精品1区2区3区 久久免费视频7 | 在线观看av中文字幕 | 操操操日日日 | 在线99视频 | 中文字幕高清免费日韩视频在线 | 欧美日韩一区二区三区免费视频 | 91久久一区二区 | 国产视频在 | 狠狠操精品 | 一区二区三区在线观看免费 | 在线中文字母电影观看 | 国产午夜精品久久久久久久久久 | 日韩夜夜爽 | 国产在线观看h | 奇米影视在线99精品 | 中文字幕免费高 | 午夜久久福利影院 | 狠狠色伊人亚洲综合成人 | 久久久精品国产一区二区三区 | 国产一区二区视频在线 | 日韩中文免费视频 | 久久免费视频4 | 2019中文字幕网站 | 成人午夜电影在线播放 | 天天天天综合 | 日韩激情在线视频 | 久久久www成人免费精品张筱雨 | 中文有码在线 | 久久精品国产第一区二区三区 | 国内外成人在线视频 | 亚洲国产经典视频 | 超碰日韩 | 日本久久不卡视频 | 国产美女精品久久久 | 中文字幕网站视频在线 | 黄色影院在线免费观看 | 国产精品自产拍在线观看蜜 | 国产精品成人国产乱 | 成人久久久久久久久 | 国产亚洲精品美女久久 | 五月天色综合 | 精品国产一区二区三区av性色 | 欧美激情综合网 | 天天天操天天天干 | 亚洲九九九在线观看 | 久久一区二区三区国产精品 | 99久久日韩精品免费热麻豆美女 | 久久综合色婷婷 | 91大神在线观看视频 | 一区二区三区动漫 | 久久久久亚洲国产精品 | 欧美一级免费 | 婷婷六月丁 | 久久黄色片子 | 99精品成人 | 中文理论片 | 久久久久免费精品 | 天堂激情网 | 伊人久久电影网 | 免费福利小视频 | 国产精品久久麻豆 | 久久99亚洲网美利坚合众国 | 亚洲国产手机在线 | 亚洲免费a | 久久高清免费观看 | 伊人婷婷激情 | 久久久久99精品成人片三人毛片 | 伊人春色电影网 | 久久国产精品一区二区三区四区 | 日三级在线 | 69精品人人人人 | 香蕉视频国产在线观看 | 中文字幕国产在线 | 国产精品久久久久久久7电影 | 探花视频免费在线观看 | 久久精品麻豆 | 欧美日韩不卡在线观看 | 成人四虎 | 欧美日韩性 | 日韩欧美精品在线 | 精品a在线 | av在线免费播放网站 | 国产精品xxxx18a99 | 欧美一区二区三区在线看 | 国产日韩精品在线观看 | www.91成人 | 亚洲色影爱久久精品 | 国产精品2019 | 狠狠色丁香婷婷综合久小说久 | 日韩在线不卡 | 日韩欧美aaa | 在线观看片 | 国产精品18久久久久久久久 | 美女黄网站视频免费 | 91欧美精品| 亚洲影院天堂 | 免费在线观看一区 | 欧美电影在线观看 | 成人在线观看资源 | 中文字幕乱在线伦视频中文字幕乱码在线 | 99热手机在线观看 | 国产精品欧美精品 | 国产亚洲成av人片在线观看桃 | 久草在线资源网 | 国产黄色av影视 | 国产黄大片在线观看 | 男女免费av | 久久精品人人做人人综合老师 | 亚洲在线观看av | 亚洲精品视频在 | 免费久久99精品国产婷婷六月 | 人人看人人爱 | 欧美国产日韩一区二区 | 久久久国产网站 | 午夜精品久久久久久久久久久 | 麻豆首页 | 欧美大片www| 免费网址在线播放 | 18av在线视频 | a在线观看视频 | 久久久久久久久久国产精品 | 欧美日韩高清一区二区三区 | 久久综合久色欧美综合狠狠 | 视频在线观看91 | 韩国精品在线 | 最近2019中文免费高清视频观看www99 | 夜夜澡人模人人添人人看 | 操一草| 国产精品久久久久久久久久尿 | 91av官网| 亚洲精品一区二区三区四区高清 | 天天爱天天草 | 久久国产亚洲 | 久久久久久久国产精品视频 | av在线最新 | 国产精品视频999 | 中文字幕在线播放日韩 | 日韩欧美高清 | 天天插天天干天天操 | 99精品在线看 | 久久超碰免费 | 国产精品久久久免费看 | 国产午夜精品久久久久久久久久 | 精品福利视频在线观看 | 久久视频精品在线观看 | 91污污视频在线观看 | 亚洲精品在线视频观看 | .国产精品成人自产拍在线观看6 | 人人dvd| 中文字幕av网站 | 欧美性直播 | 婷婷国产在线观看 | 色悠悠久久综合 | 在线观看视频精品 | 日本精品视频网站 | 欧美久久久一区二区三区 | 欧美日韩国产综合一区二区 | 亚洲天天看 | 久久久91精品国产 | 97精品国产97久久久久久 | 一区二区三区动漫 | 91九色成人 | 日操操| 色综合久久88色综合天天免费 | 久久99精品国产麻豆婷婷 | 国产精品av免费观看 | 激情久久综合网 | wwwwww黄| 一级片在线 | 日韩精品在线免费播放 | 91中文字幕永久在线 | 国产精品va视频 | 婷婷日日| www色com | 激情综合网在线观看 | 97电院网手机版 | 黄网站色视频 | 国产精品a久久久久 | 日韩在线观看视频网站 | 久久视频热 | 国产成人一区二区三区免费看 | 91香蕉视频 | 中文字幕免费 | 婷婷激情五月综合 | 人人爽久久久噜噜噜电影 | 欧美精品在线观看免费 | 国产精品不卡视频 | 精品免费在线视频 | 久久99精品视频 | www.av在线.com | 三级黄色网络 | 久久人人爽人人爽 | 天天爽网站| 91九色在线视频 | 日本在线观看视频一区 | 黄网站免费大全入口 | 中文字幕在 | 人人爽人人爽人人爽学生一级 | 国产成人精品亚洲精品 | 日韩电影在线观看一区二区三区 | 婷婷丁香激情 | 欧亚日韩精品一区二区在线 | 麻豆视频免费入口 | 欧美另类tv | 日韩av一区二区三区在线观看 | 人人舔人人 | 91视频高清完整版 | 91黄色视屏 | 久操久| 久久综合射 | 天天艹天天爽 | 国产精品视频区 | 九九日韩 | 超碰在线日本 | 久久精品欧美 | 99久久激情视频 | 一级片免费观看视频 | 精品黄色在线观看 | 久久久久亚洲国产精品 | 国产美女精品视频 | 狠狠做六月爱婷婷综合aⅴ 日本高清免费中文字幕 | 成人手机在线视频 | 国产精品久久久久aaaa | 日韩动漫免费观看高清完整版在线观看 | 亚洲视频专区在线 | 色偷偷av男人天堂 | 日韩精品一区二区在线观看视频 | 福利一区在线视频 | 国产日韩精品在线观看 | 国产精品综合久久久 | 天天干中文字幕 | 免费视频97 | 在线播放一区 | 最近中文字幕免费av | 人人狠狠| 欧美精品视| a级片久久久 | 婷婷色中文字幕 | 中文字幕在线观看完整 | 丝袜少妇在线 | 国产精品免费在线视频 | 激情综合五月婷婷 | 久章草在线观看 | 亚洲精品乱码久久 | 亚洲一区精品人人爽人人躁 | 五月激情片 | 九九久久国产精品 | 免费碰碰| 在线国产日韩 | 99精品视频在线观看播放 | 中文在线字幕免 | 午夜婷婷网 | www黄com| 最近最新中文字幕 | 精品黄色视 | 日韩欧美综合精品 | 精品视频123区在线观看 | 在线观看视频在线观看 | 日韩精品一区二区在线 | 成人黄色电影免费观看 | 欧美男同视频网站 | 2019精品手机国产品在线 | 国产精品久久久久久久久久ktv | 国产精品一区二区三区观看 | 日韩在线观看视频一区二区三区 | 99精品国产一区二区三区麻豆 | 精品久久精品久久 | 欧美精品一区在线 | 玖玖在线精品 | 免费看的黄色网 | 欧美一区二区三区激情视频 | 黄色一级大片在线观看 | 色婷婷综合成人av | 黄色aaa级片| 五月天综合色 | 色妞色视频一区二区三区四区 | 久久香蕉一区 | 五月婷婷六月综合 | 精品国产一区二区三区久久 | 日日夜夜天天操 | 久久国产精品二国产精品中国洋人 | 国产亚洲综合在线 | 国产麻豆剧传媒免费观看 | 国产999视频 | 日韩中文字幕电影 | 欧美日韩不卡在线 | 国产成人av在线影院 | 精品视频免费播放 | 国产又粗又硬又爽视频 | 国产生活一级片 | 久久精品国产免费看久久精品 | 中文字幕色在线 | 中文字幕乱视频 | 久久久久久久久久免费视频 | 国产精品原创在线 | 91精品国自产在线观看欧美 | 最近日本字幕mv免费观看在线 | 久爱综合 | 久久99这里只有精品 | 99久久精品免费看国产免费软件 | 中文字幕日韩免费视频 | 五月天丁香综合 | 国产亚洲91 | 69国产成人综合久久精品欧美 | 天堂视频中文在线 | 久草免费在线视频观看 | 日日干美女| 中文字幕在线观看视频免费 | av电影不卡| 亚洲欧洲日韩在线观看 | 美州a亚洲一视本频v色道 | 亚洲91精品在线观看 | 国产一区二区在线免费观看 | 免费看日韩 | 国产字幕在线播放 | 欧美久草视频 | 亚洲综合狠狠干 | av黄色国产 | 国产精品自在欧美一区 | 国产视频久 | 久久免费精品 | 国产成人在线精品 | 成人av片免费看 | 99免费在线视频观看 | 粉嫩一二三区 | 91麻豆精品国产自产 | 国产美女视频免费 | 日韩性久久 | 精品国产福利在线 | 91丨九色丨高潮 | 五月天亚洲婷婷 | 亚州av网站大全 | 国产精品久久久久久av | av在线亚洲天堂 | 亚洲成av人片在线观看 | 人人狠狠综合久久亚洲 | 六月激情丁香 | 色婷婷综合久久久久中文字幕1 | 中文免费观看 | 亚洲永久在线 | 在线观看亚洲视频 | 欧美精品v国产精品 | 91亚洲综合 | 国产一级黄色片免费看 | 国产视频91在线 | 久草在线最新视频 | www.com.日本一级 | 欧美日韩国产mv | 久久久久久久久艹 | av在线成人 | 亚洲精品影院在线观看 | 亚洲黄a | 99 久久久久 | 99视频在线播放 | 香蕉视频网址 | 亚洲一级电影 | 伊人婷婷| 一区二区三区免费看 | 色a在线观看 | 最近免费中文字幕大全高清10 | 国产精品一区免费看8c0m | 国产看片 色 | 久久久久免费精品国产 | 国产三级av在线 | 国产精品视频不卡 | 色狠狠一区二区 | 久久亚洲成人网 | 久久精品一区八戒影视 | 亚洲精品理论 | 日韩亚洲国产中文字幕 | 亚洲国产精品成人女人久久 | 一区二区三区久久 | 欧美国产精品一区二区 | 亚州成人av在线 | 五月香婷| 91精品一| 成人免费毛片aaaaaa片 | 在线观看亚洲电影 | 亚洲视频999 | 日本精品在线看 | 热久久在线视频 | 在线观看www. | 国产在线高清视频 | 欧美在线视频a | 久久手机免费视频 | 免费成人看片 | 一区二区视频在线播放 | 超碰人人干人人 | 亚洲a资源 | 国产69精品久久久久9999apgf | 日韩在线视频观看免费 | av超碰免费在线 | 777久久久| 欧美日韩视频一区二区三区 | 久久首页 | 国产色爽 | 亚洲精品资源在线 | 色偷偷88888欧美精品久久久 | 99麻豆久久久国产精品免费 | 成人网在线免费视频 | 免费日韩一区二区三区 | 黄色三级在线看 | 精品国产三级 | 久久tv| av女优中文字幕在线观看 | 久久久久国产精品一区 | 人人搞人人搞 | 黄色www在线观看 | 日日干干夜夜 | 欧美高清视频不卡网 | 成人av网站在线 | 四虎成人精品 | 日日干天夜夜 | 91在线porny国产在线看 | 91网址在线看 | 国产乱码精品一区二区蜜臀 | 天天插日日操 | 综合婷婷丁香 | 国产色视频| 久久第四色 | 五月婷婷激情 | 91精品久久久久久综合五月天 | 中文字幕一区二区三区四区久久 | 欧美成人日韩 | 久久夜色精品国产欧美一区麻豆 | 国产精品精品久久久久久 | 在线观看精品一区 | 一区在线观看视频 | 日韩成人精品一区二区三区 | 色综合久久久久综合体 | 麻豆视频免费在线观看 | 午夜在线国产 | 丁香一区二区 | 香蕉影视app | 日韩一级黄色片 | 亚洲最新精品 | 18做爰免费视频网站 | 国产午夜精品一区二区三区在线观看 | 91污视频在线| 激情婷婷丁香 | 手机av在线网站 | 久久久在线免费观看 | 国产看片免费 | 丁香花在线观看视频在线 | 免费在线一区二区 | 久久资源在线 | 国产色在线观看 | 国产成人在线网站 | 免费a网址| 欧美日韩亚洲在线观看 | 91专区在线观看 | 黄p网站在线观看 | 欧美成人黄色片 | 国内久久视频 | 日韩av一区二区在线 | 91av亚洲 | 五月婷亚洲| 日韩极品在线 | av免费在线免费观看 | 天天爱天天色 | 国产精品av一区二区 | 亚洲第一成网站 | 久久a免费视频 | 亚洲精品综合久久 | 日韩字幕| 天天干,天天干 | 97色噜噜| 国产成人三级一区二区在线观看一 | 99re亚洲国产精品 | a级片在线播放 | 美女av免费看 | 国产不卡视频在线播放 | 欧美精品久久久久性色 | 狠狠色噜噜狠狠 | 在线观看日韩视频 | 日韩av有码在线 | 免费视频色 | av线上免费观看 | 99在线高清视频在线播放 | 国产精品网址在线观看 | 亚洲观看黄色网 | 高清在线观看av | 成人a视频在线观看 | 中文字幕第一页在线视频 | 免费精品国产va自在自线 | 在线看一级片 | 国产黄视频在线观看 | 免费视频一区 | 亚洲精品视频免费观看 | 久草在线手机观看 | 中文字幕国内精品 | 最近中文字幕高清字幕免费mv | 成年人在线观看视频免费 | 亚洲一区二区三区毛片 | av中文字幕网站 | 在线欧美国产 | 欧美淫aaa免费观看 日韩激情免费视频 | 激情欧美一区二区三区免费看 | 欧美精品一区二区三区四区在线 | 99精品久久久| 午夜12点| avove黑丝 | 国产 欧美 日产久久 | 有码中文字幕 | 精品欧美一区二区三区久久久 | 国产精品视频全国免费观看 | 一区二区视频播放 | 精品视频国产 | 美女网站在线观看 | 免费在线成人av | 人人干人人艹 | 九九视频热 | 国产在线国偷精品产拍免费yy | 高清久久久久久 | 国产精品一区电影 | 97小视频 | 国产精品二区在线观看 | 中文字幕中文字幕在线中文字幕三区 | 欧美性大战久久久久 | 日本不卡一区二区三区在线观看 | 亚洲专区路线二 | 青青河边草观看完整版高清 | 91观看视频 | 日韩av在线资源 | 天堂av免费 | 国内揄拍国产精品 | 天天干天天做天天操 | 黄色毛片在线 | www.av小说| 91传媒在线观看 | 天天添夜夜操 | 日韩免费播放 | 99国产一区二区三精品乱码 | 精品国产一区二区三区av性色 | 亚洲国产成人在线播放 | 亚洲精选视频免费看 | 国产视频黄 | 91在线视频免费91 | 激情综合五月婷婷 | 欧美日韩免费观看一区二区三区 | 国产欧美久久久精品影院 | 国产精品久久久久久久久婷婷 | 中文字幕中文字幕中文字幕 | 狠狠狠狠干 | 蜜桃av观看 | 特级片免费看 | 婷婷六月激情 | 97人人模人人爽人人喊网 | 婷婷丁香视频 | 久久综合在线 | 国产视频2 | 国产无吗一区二区三区在线欢 | 国产精品亚洲人在线观看 | 亚洲日韩中文字幕在线播放 | 精品久久国产精品 | 亚洲精品九九 | 一区二区三区免费在线观看 | 99精品观看 | 亚洲欧美在线视频免费 | 黄色精品一区 | 久久情侣偷拍 | 91香蕉嫩草 | 2019国产精品| 婷婷精品国产一区二区三区日韩 | 婷婷丁香在线视频 | 香蕉网在线观看 | 四虎在线视频 | 国产一级免费观看视频 | 日韩一区在线播放 | 黄p在线播放| 成人午夜网 | 亚洲一区二区三区在线看 | 日韩av免费在线看 | 国产麻豆电影 | 7799av| 色婷婷综合成人av | 国产色网 | 国产精品99久久久久 | av中文国产| 久久精品日产第一区二区三区乱码 | 天天爱综合 | 久久在线视频精品 | 中文字幕日韩高清 | 天天干天天干天天色 | 亚洲最新在线 | 2019中文字幕第一页 | 探花视频在线版播放免费观看 | 精品国产1区二区 | 天天射色综合 | 国产精品1区2区在线观看 | 午夜国产成人 | 中文字幕免费观看 | 亚洲第一香蕉视频 | 狠狠色丁香婷婷综合最新地址 | 日日夜夜网 | 国产香蕉视频在线观看 | 激情综合网在线观看 | 人人澡人人爱 | 91亚洲精| 国产一级电影在线 | a天堂在线看 | 日韩在线三区 | 久久婷婷久久 | 在线国产不卡 | 91手机视频 | 久久精品一区八戒影视 | 欧美在线观看视频一区二区三区 | 中文字幕亚洲欧美 | 91资源在线播放 | 亚洲精品资源在线观看 | 亚洲精品99久久久久中文字幕 | 国产精品久久久久一区 | 国产成人精品福利 | 欧美久久九九 | 97超碰在线久草超碰在线观看 | 黄网站免费久久 | 最新日本中文字幕 | 国产一区在线看 | 日韩精品中文字幕有码 | 国产精品欧美久久久久无广告 | 三级黄色片在线观看 | 500部大龄熟乱视频 欧美日本三级 | 日韩大片在线观看 | 丰满少妇在线观看网站 | 国产精品毛片一区二区在线看 | 懂色av一区二区三区蜜臀 | 日韩精品一区二区三区水蜜桃 | 中文字幕视频免费观看 | 日本在线精品视频 | 美女网站黄免费 | 免费在线观看午夜视频 | 久久精品亚洲综合专区 | 亚洲三级黄色 | 欧美日韩在线播放 | 亚洲一区二区黄色 | 久久久久久久久久久久久9999 | 亚洲91中文字幕无线码三区 | 91入口在线观看 | 黄色特级一级片 | 片网站| 日韩久久精品一区二区三区 | 麻豆91精品91久久久 | 又黄又刺激又爽的视频 | 久久香蕉一区 | 天天伊人狠狠 | 久久久91精品国产一区二区精品 | 亚洲视频 在线观看 | 在线观看视频一区二区三区 | 久久久久久久福利 | 久草手机视频 | 91人人射 | 免费看v片 | 狠狠的干 | 中文字幕字幕中文 | 午夜精品一区二区三区可下载 | 国产成人一区二区三区在线观看 | 亚洲日本在线一区 | 在线观看免费高清视频大全追剧 | 成人h动漫在线看 | 欧美激情精品久久 | 国产系列在线观看 | 亚洲午夜精品一区 | 亚洲天堂视频在线 | 欧美在线视频一区二区 | 亚洲 欧美 变态 国产 另类 | 亚洲成人免费观看 | 午夜久久福利视频 | 国产97在线播放 | 丁香综合av| 一区二区三区日韩在线观看 | 亚洲v精品 | av 一区二区三区 | 欧美一级视频免费看 | 国产高清av免费在线观看 | 中文字幕影片免费在线观看 | 四虎影视4hu4虎成人 | 中文字幕亚洲不卡 | 91精品久久久久 | 中文字幕第一页在线播放 | 性色av一区二区三区在线观看 | 一级特黄aaa大片在线观看 | 激情丁香 | 日韩99热| 福利视频区 | 91精彩视频在线观看 | 亚洲精品一区二区久 | 久久精品男人的天堂 | 精品91| 成人污视频在线观看 | 日韩a在线观看 | 亚洲另类久久 | 国产老妇av | 精品亚洲va在线va天堂资源站 | 久草在线视频精品 | 久久精品五月 | 成年人免费看av | 精品福利在线 | 超薄丝袜一二三区 | 美女禁18| 久av在线 | 日韩免费一二三区 | 成人啪啪18免费游戏链接 | 国产精品自产拍 | 欧美性黑人 | 精品欧美一区二区精品久久 | 日韩一区精品 | 精品国产美女 | 欧美另类视频 | 91av99| 午夜精品福利在线 | 大胆欧美gogo免费视频一二区 | 爱色av.com| 成年人黄色大全 | 久久久国产精品成人免费 | 日韩av电影中文字幕在线观看 | 97色综合| 色婷婷色 | 亚洲欧洲精品一区二区精品久久久 | 香蕉色综合| 久久久久久久久久国产精品 | 国产主播大尺度精品福利免费 | 一级淫片在线观看 | 免费成人在线电影 | 亚洲自拍偷拍色图 | 亚洲欧美日韩精品久久久 | 久热色超碰 | 97网在线观看 | 久久免费视频99 | 亚洲另类视频 | 日本黄色大片儿 | 亚洲精品视频在线观看视频 | 天天操天天射天天舔 | 91在线视频免费 | 在线你懂 | 永久免费av在线播放 | 中文字幕一区二区在线播放 | 在线性视频日韩欧美 | 天天se天天cao天天干 | 日韩三级视频在线观看 | 色婷婷久久久 | 日韩电影中文字幕 | av在线免费在线观看 | 久久久久久久久免费视频 | 天天操天天射天天操 | 中文字幕免费高清在线 | 亚洲成人免费在线 | 国产精品18久久久久久久 | 91黄色视屏 | 手机在线视频福利 | 国产99久久久国产精品成人免费 | 美女免费视频观看网站 | 亚洲综合欧美精品电影 | 国产精品尤物视频 | 亚洲精品小视频在线观看 | 丁香九月婷婷综合 | 精品国产成人av在线免 | 久草观看视频 | 精品一区二区三区久久久 | 99久久毛片 | 天天天天色射综合 | 亚洲人在线视频 | 欧美天堂视频在线 | 亚洲女在线 | 婷婷色在线视频 | 欧美二区视频 | 精品久久网站 | 五月综合色婷婷 | 国产一二区免费视频 | 91久久国产自产拍夜夜嗨 | 91在线免费播放视频 | 国产精品都在这里 | 欧美一级免费片 | 欧美日韩精品综合 | 狠狠干夜夜爽 | 国产精品久久99精品毛片三a | 欧美大片第1页 | 国产精品久久久久永久免费看 | avsex| 国产美女被啪进深处喷白浆视频 | av看片在线观看 | 超碰精品在线 | 日本中文字幕影院 | 91九色九色 | 五月天com | 免费国产在线精品 | 99久久超碰中文字幕伊人 | 69精品在线 | 免费看av在线 | 91九色国产视频 | 高潮久久久久久久久 | 91影视成人| 久久99久久99精品免视看婷婷 | 新av在线| 在线看国产视频 | 91精品一区在线观看 | 91看片麻豆 | 西西人体4444www高清视频 | 四月婷婷在线观看 | 麻豆91网站 | 国产精品九九视频 | 免费观看成年人视频 | 久久综合亚洲鲁鲁五月久久 | 精品久久久久久综合 | 99在线观看免费视频精品观看 | av中文字幕在线观看网站 | avv天堂| 92精品国产成人观看免费 | 中文字幕永久免费 | 国产香蕉视频在线播放 | 亚洲综合在线发布 | 免费色视频网址 | 丁香激情视频 | 欧美另类xxxx | 国产拍在线 | www.色就是色 | 日韩在线 一区二区 | 日韩高清在线一区 | 国产成人精品一区二区三区福利 | 国产一级免费视频 | 在线免费av网站 | 国外成人在线视频网站 |