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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

android viewbinding_程序员必懂小技巧之ViewBinding

發布時間:2024/9/15 编程问答 35 豆豆
生活随笔 收集整理的這篇文章主要介紹了 android viewbinding_程序员必懂小技巧之ViewBinding 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

終于有一篇帶大家從本質來了解 ViewBinding 了。

如果你完全沒了解過 View Binding,可以先看下面這篇介紹:

AS 3.6 Canary 中推出新技術 視圖綁定 View Binding

今天我們來深入的了解 ViewBinding 的本質,看看他是怎么生成 ActivityMainBinding 這種文件的。

1、使用

ViewBinding 目前只支持 as3.6,使用方法很簡單,僅僅只需要添加如下代碼:

android {viewBinding {enabled = true} }

make project 之后,會在對應的 module 路徑:

app/build/generated/data_binding_base_class_source_out/${buildTypes}/out/${包名}/databinding

生成 ViewBinding 文件,為什么我會說 對應的 module ?因為 viewBinding 只對當前設置了 enabled = true 的 module 才會進行處理。
然后來看下處理后的文件:

public final class ActivityMainBinding implements ViewBinding {@NonNullprivate final ConstraintLayout rootView;@NonNullpublic final Button tv;private ActivityMainBinding(@NonNull ConstraintLayout rootView, @NonNull Button tv) {this.rootView = rootView;this.tv = tv;}@Override@NonNullpublic ConstraintLayout getRoot() {return rootView;}@NonNullpublic static ActivityMainBinding inflate(@NonNull LayoutInflater inflater) {return inflate(inflater, null, false);}@NonNullpublic static ActivityMainBinding inflate(@NonNull LayoutInflater inflater,@Nullable ViewGroup parent, boolean attachToParent) {View root = inflater.inflate(R.layout.activity_main, parent, false);if (attachToParent) {parent.addView(root);}return bind(root);}@NonNullpublic static ActivityMainBinding bind(@NonNull View rootView) {// The body of this method is generated in a way you would not otherwise write.// This is done to optimize the compiled bytecode for size and performance.String missingId;missingId: {Button tv = rootView.findViewById(R.id.tv);if (tv == null) {missingId = "tv";break missingId;}return new ActivityMainBinding((ConstraintLayout) rootView, tv);}...} }

我們來看看這個文件有哪些信息:

  • R.layout.activity_main 布局文件
  • 布局文件中的 view 控件和 view id
  • 布局文件的 rootView 和類型

接下來,我們會通過源碼的方式來跟蹤到,這些信息是怎么產生的。

2 、準備

由于我們并沒有依賴其他 plugin 就可以使用,所以能被直接識別只能是 classpath 依賴的 gradle 了:

classpath 'com.android.tools.build:gradle:3.6.1'

既然 make project 之后就可以看到 ViewBinding 的生成類,那么,我們可以根據 make project 的 build 信息查看做了哪些 task:

> Task :app:dataBindingMergeDependencyArtifactsDebug UP-TO-DATE > Task :app:dataBindingMergeGenClassesDebug UP-TO-DATE > ... > Task :app:dataBindingGenBaseClassesDebug

沒有找到 ViewBinding,但找到了 dataBinding,但可以肯定的是,這個 dataBinding 就是生成 ViewBinding 的 task(因為沒有其他的 task 帶有 binding)。
然后我們可以去 maven 倉庫找一下 gradle:3.6.1 ,驚喜的是,gradle:3.6.1 的依賴項有 18 個,第一個就是 Data Binding Compiler Common:

https://mvnrepository.com/artifact/com.android.tools.build/gradle/3.6.1?mvnrepository.com

然后我們進去找到對應的 compiler 3.6.1 版本,通過 gradle 依賴,我們就能看到源碼了:

https://mvnrepository.com/artifact/androidx.databinding/databinding-compiler-common/3.6.1

compile group: 'androidx.databinding', name: 'databinding-compiler-common', version: '3.6.1'

可以看到,ViewBinding 是屬于 dataBinding 庫里面的一個小功能。

3 階段一:收集元素

由于我們僅僅只是查看 dataBinding compiler,所以,對于 gradle 調用 compiler 的哪個部分進行聯結,我們是查看不到的,但這也不影響我們跟蹤源碼。

public boolean processResources(final ResourceInput input, boolean isViewBindingEnabled) throws ParserConfigurationException, SAXException, XPathExpressionException,IOException {...// 文件處理 callbackProcessFileCallback callback = new ProcessFileCallback(){...// 是否是增量編譯if (input.isIncremental()) {// 增量編譯文件處理processIncrementalInputFiles(input, callback);} else {// 全量編譯文件處理processAllInputFiles(input, callback);}...}

我們直接來看 全量編譯文件處理 :

private static void processAllInputFiles(ResourceInput input, ProcessFileCallback callback)throws IOException, XPathExpressionException, SAXException, ParserConfigurationException {...for (File firstLevel : input.getRootInputFolder().listFiles()) {if (firstLevel.isDirectory()) {// ①、判斷 firstLevel.getName() 的 startWith 是否為 layoutif (LAYOUT_FOLDER_FILTER.accept(firstLevel, firstLevel.getName())) {// ②、創建 subPath callback.processLayoutFolder(firstLevel);// ③、遍歷 firstLevel 目錄下面的所有文件,滿足 toLowerCase().endsWith(".xml");for (File xmlFile : firstLevel.listFiles(XML_FILE_FILTER)) {// ④、處理布局文件callback.processLayoutFile(xmlFile);}} else {...}

①、判斷當前的文件夾的文件名 startWith 是否是 layout

②、會創建一個文件輸出目錄,輸出目錄為 new File(input.getRootOutputFolder(),file path); 這個 file path 做了與輸入目錄的 relativize 化,其實,可以理解為,這個輸出目錄為 輸出目錄 + file 文件名 。

③、判斷 layout 下面的文件名 endWith 是否是 .xml

④、處理 xml 文件,這個地方也會創建一個輸出目錄,跟 ② 的方式一樣,最終,這個方法會

調用到 processSingleFile 方法
然后我們來看下 processSingleFile 方法:

public boolean processSingleFile(@NonNull RelativizableFile input, @NonNull File output,boolean isViewBindingEnabled) throws ParserConfigurationException, SAXException, XPathExpressionException,IOException {// ①、解析 xmlfinal ResourceBundle.LayoutFileBundle bindingLayout = LayoutFileParser.parseXml(input, output, mResourceBundle.getAppPackage(), mOriginalFileLookup,isViewBindingEnabled);...// ②、緩存起來mResourceBundle.addLayoutBundle(bindingLayout, true);return true; }

①、這個地方會拿著 xml 文件的路徑和輸出路徑進行解析
②、將解析結果緩存起來


然后來看下 xml 的解析 parseXml

@Nullable public static ResourceBundle.LayoutFileBundle parseXml(@NonNull final RelativizableFile input,@NonNull final File outputFile, @NonNull final String pkg,@NonNull final LayoutXmlProcessor.OriginalFileLookup originalFileLookup,boolean isViewBindingEnabled){...return parseOriginalXml(RelativizableFile.fromAbsoluteFile(originalFile, input.getBaseDir()),pkg, encoding, isViewBindingEnabled); }

parseOriginalXml:

private static ResourceBundle.LayoutFileBundle parseOriginalXml(@NonNull final RelativizableFile originalFile, @NonNull final String pkg,@NonNull final String encoding, boolean isViewBindingEnabled)throws IOException {...// ①、是否是 databindingif (isBindingData) {data = getDataNode(root);rootView = getViewNode(original, root); } else if (isViewBindingEnabled) { // ②、viewBinding 是否開啟data = null;rootView = root;// xml 的根元素} else {return null;}...// 生成 bundleResourceBundle.LayoutFileBundle bundle =new ResourceBundle.LayoutFileBundle(originalFile, xmlNoExtension, original.getParentFile().getName(), pkg,isMerge, isBindingData, getViewName(rootView));final String newTag = original.getParentFile().getName() + '/' + xmlNoExtension;// viewBinding 不會 解析 dataparseData(original, data, bundle);// ③、解析表達式parseExpressions(newTag, rootView, isMerge, bundle);return bundle;

①、是否是 databinding,這個的判斷依據是,根元素是否是 layout , 獲取 data 和 rootView

②、isViewBindingEnable 就是 gradle 設置的 enable = true,根元素就是就是他的 rootView,這個地方要注意的是 data = null,data 數據只有 databinding 才會有的元素,viewBinding 是不會去解析的

③、解析表達式,這里面會循環遍歷元素,解析 view 的 id、tag、include、fragment 等等 xml 相關的元素,并且還有 databinding 相關的 @={ 的表達式,最后將結果緩存起來,源碼我就補貼了,太多,影響文章

4 、階段二:寫 Layout 文件

// xml 的輸出目錄 public void writeLayoutInfoFiles(File xmlOutDir) throws JAXBException {writeLayoutInfoFiles(xmlOutDir, mFileWriter); } public void writeLayoutInfoFiles(File xmlOutDir, JavaFileWriter writer) throws JAXBException {// ①、遍歷收集的 layout filefor (ResourceBundle.LayoutFileBundle layout : mResourceBundle.getAllLayoutFileBundlesInSource()) {writeXmlFile(writer, xmlOutDir, layout);}... } private void writeXmlFile(JavaFileWriter writer, File xmlOutDir,ResourceBundle.LayoutFileBundle layout)throws JAXBException {// ②、生成文件名String filename = generateExportFileName(layout);// ③、寫文件writer.writeToFile(new File(xmlOutDir, filename), layout.toXML());}

①、遍歷之前收集到的所有 LayoutFileBundle,寫入 xmlOutDir 路徑

②、生成 LayoutFileBundle 的文件名,這個文件名最終生成為:

layout.getFileName() + '-' + layout.getDirectory() + ".xml

例如 activity_main.xml,生成的 fileName 為 activity_main-layout.xml

③、將 LayoutFileBundle 轉換 xml ,寫入文件
由于我們是直接跟蹤的 databinding compiler 庫,所以無法跟蹤到 gradle 是什么聯結 compiler 庫的,所以,xmlOutDir 我是未知的,也不知道他存到了哪,但沒有關系,我們既然知道了生成的文件名規則,我們可以全局搜索該文件,最終,我們在該目錄中搜索到:

app/build/intermediates/data_binding_layout_info_type_merge/debug/out/activity_main-layout.xml

文件內容如下:

<?xml version="1.0" encoding="utf-8" standalone="yes"?> <Layout directory="layout" filePath="/Users/codelang/project/app/src/main/res/layout/activity_main.xml"isBindingData="false"isMerge="false" layout="activity_main" modulePackage="com.codelang.viewBinding"rootNodeType="androidx.constraintlayout.widget.ConstraintLayout"><Targets><Target tag="layout/activity_main_0"view="androidx.constraintlayout.widget.ConstraintLayout"><Expressions /><location endLine="31" endOffset="51" startLine="1" startOffset="0" /></Target><Target id="@+id/tv" view="Button"><Expressions /><location endLine="16" endOffset="51" startLine="8" startOffset="4" /></Target></Targets> </Layout>

這份 xml 描述了原始 layout 的相關信息,對于 include 和 merge 是怎么關聯 tag 的,讀者可以自行運行查看

5 、階段三:寫 ViewBinding 類

@Suppress("unused")// used by tools class BaseDataBinder(val input : LayoutInfoInput) {init {input.filesToConsider.forEach {it.inputStream().use {// 又將上面收集的 layout,將 xml 轉成 LayoutFileBundleval bundle = LayoutFileBundle.fromXML(it)// 緩存進 ResourceBundleresourceBundle.addLayoutBundle(bundle, true)}}...}

可以看到,最后又去讀之前生成的 layout xml,這個地方為什么會又寫又讀,而不是直接利用之前 layout 的緩存?我想可能是因為解耦,他們都是獨立的 task。

然后來看是如何生成 Binding 類的:

@Suppress("unused")// used by android gradle plugin fun generateAll(writer : JavaFileWriter) {// 拿到所有的 LayoutFileBundle,并根據文件名進行分組排序val layoutBindings = resourceBundle.allLayoutFileBundlesInSource.groupBy(LayoutFileBundle::getFileName)// 遍歷 layoutBindingslayoutBindings.forEach { layoutName, variations ->// 將 LayoutFileBundle 信息包裝成 BaseLayoutModelval layoutModel = BaseLayoutModel(variations)val javaFile: JavaFileval classInfo: GenClassInfoLog.GenClass// 當前是否是 databindingif (variations.first().isBindingData) {...} else {// ①、不是的話,按照 ViewBinding 處理val viewBinder = layoutModel.toViewBinder()// ②、生成 java file 文件javaFile = viewBinder.toJavaFile(useLegacyAnnotations = !useAndroidX)...}writer.writeToFile(javaFile)...}

①、toViewBinder 是 BaseLayoutModel 的拓展函數,他會將 LayoutFileBundle 包裝成 ViewBinder 類返回

②、toJavaFile 是 ViewBinder 的拓展函數,該拓展函數在 ViewBinderGenerateSource 類中

// ①、最終會調用到 JavaFileGenerator 的 create 方法 fun ViewBinder.toJavaFile(useLegacyAnnotations: Boolean = false) =JavaFileGenerator(this, useLegacyAnnotations).create()private class JavaFileGenerator(private val binder: ViewBinder,private val useLegacyAnnotations: Boolean) {// 最終會調用生成 javaFile 方法,生成的類信息主要看 typeSpec 方法fun create() = javaFile(binder.generatedTypeName.packageName(), typeSpec()) {addFileComment("Generated by view binder compiler. Do not edit!")}private fun typeSpec() = classSpec(binder.generatedTypeName) {addModifiers(PUBLIC, FINAL)val viewBindingPackage = if (useLegacyAnnotations) "android" else "androidx"addSuperinterface(ClassName.get("$viewBindingPackage.viewbinding", "ViewBinding"))// TODO determine if we can elide the separate root field if the root tag has an ID.addField(rootViewField())addFields(bindingFields())addMethod(constructor())addMethod(rootViewGetter())if (binder.rootNode is RootNode.Merge) {addMethod(mergeInflate())} else {addMethod(oneParamInflate())addMethod(threeParamInflate())}addMethod(bind()) }

這個地方就貼 typeSpec 方法了,具體的,大家可以自己去看源碼,從 typeSpec 中,我們就可以看到點生成的 ViewBinding 類包含了哪些東西,rootView 字段,inflater 、bind 方法。

總結

文章已經盡量保持源碼簡短,只貼核心部分。本來還想絮絮叨叨一下,算了,就到這。

文章有關參考

https://github.com/AndroidCot/Android?github.com

總結

以上是生活随笔為你收集整理的android viewbinding_程序员必懂小技巧之ViewBinding的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

美女视频黄是免费的 | 国产一区高清在线观看 | 午夜视频在线观看一区二区三区 | 日日日日| av电影免费在线看 | 国产视频 久久久 | 黄色电影在线免费观看 | 亚洲精品视 | 免费一级片视频 | a√天堂资源 | 91看片淫黄大片在线播放 | 九九九视频精品 | 国产一区国产精品 | 国产玖玖精品视频 | av天天澡天天爽天天av | 黄色www免费 | 久久久久一区 | 欧美日韩高清在线 | 中文字幕在线观看完整 | 超碰在线97国产 | 97视频一区| 亚洲在线黄色 | 特级西西www44高清大胆图片 | 国产综合福利在线 | 欧美色综合 | 婷婷丁香在线观看 | 久久99热这里只有精品国产 | 国产精品剧情 | 最新国产在线视频 | 在线免费成人 | 国产视频色 | 亚洲精品在线一区二区三区 | 久久电影网站中文字幕 | 成人av片免费观看app下载 | 久久综合爱| av网站免费线看精品 | 一级片视频在线 | www黄色av | 久久精品www人人爽人人 | 成人精品国产 | 久热免费在线观看 | 国产精品美女久久久久久免费 | 丁香六月婷婷综合 | 国产偷国产偷亚洲清高 | 一区二区精 | 香蕉视频网址 | 最近中文字幕久久 | 97麻豆视频 | 成人久久18免费网站麻豆 | 成人久久国产 | 国内精品久久久久久久影视麻豆 | 天天操天天操天天操天天操天天操天天操 | 久草干| 久草在线观 | 色婷婷激情四射 | 国产成人精品在线观看 | 四虎免费av | 国产精品手机在线观看 | 婷婷射五月 | 一区二区三区四区精品视频 | www好男人| 992tv在线成人免费观看 | 国产精品午夜久久 | 精品久久久久久亚洲 | 成人在线视频免费 | 日韩在线观看第一页 | 国产主播大尺度精品福利免费 | 久久国产精品视频观看 | 成人在线网站观看 | 97在线观看免费视频 | 狠狠干五月天 | 亚洲三级毛片 | 日韩欧美一区二区三区免费观看 | av网址最新| 久久综合亚洲鲁鲁五月久久 | jizz999| 亚洲免费婷婷 | 色资源在线| 一区二区三区在线观看中文字幕 | 免费看黄网站在线 | 久久视频99 | 五月天色丁香 | 91视频免费看 | 久久久免费视频播放 | 99r在线精品 | 午夜精品影院 | 亚洲精品国产精品99久久 | 91亚洲精品久久久蜜桃 | 人人爽人人爽人人爽学生一级 | 精品中文字幕在线观看 | 天天色综合天天 | 一区二区不卡在线观看 | 91在线精品观看 | 成人av动漫在线 | 日韩午夜三级 | 91亚洲精品久久久蜜桃网站 | 日韩精品中文字幕在线观看 | 亚洲综合成人专区片 | 激情开心 | 亚洲成人午夜在线 | 亚洲精品久久激情国产片 | 欧美一区二区精美视频 | 久久99久久99精品免视看婷婷 | 日韩av线观看 | 亚洲午夜精品一区 | 国产精品久久久久久久久蜜臀 | 精品在线你懂的 | 亚洲黄色软件 | av成人亚洲 | 婷婷视频导航 | 日韩免费成人 | 一区二区三区播放 | 色网站在线看 | 久久精品视频在线观看免费 | 日韩免费在线观看网站 | 天天摸日日摸人人看 | 中文字幕在线播放日韩 | 国产精品久久久久久久久岛 | 中文字幕在线网址 | 成年人在线免费视频观看 | 久久综合免费视频 | 最近中文字幕免费大全 | 精品美女久久久久久免费 | 午夜av免费在线观看 | 草久电影| 国产成人精品午夜在线播放 | 久久久久电影网站 | 国产一在线精品一区在线观看 | 日韩xxx视频 | 在线观看黄网站 | 国产字幕在线播放 | 91福利视频一区 | 亚洲欧美精品在线 | 精品久久毛片 | 精品亚洲va在线va天堂资源站 | 亚洲三级性片 | 久久国产精彩视频 | 99 国产精品 | 在线播放日韩av | 91黄视频在线 | 去干成人网 | 91精品久久久久久久久久久久久 | 天天艹天天操 | 91丨九色丨国产在线观看 | 黄色免费网站大全 | 欧美色综合久久 | 夜夜操天天干, | 国产精品久久久久久久久久久免费看 | 香蕉网在线播放 | 久久国内精品99久久6app | 欧美成人黄色片 | 欧美在线视频精品 | 久久婷婷视频 | 最新影院 | 96看片| 91午夜精品 | 国产日韩精品在线 | 亚洲欧美精品一区 | 亚洲区视频在线观看 | 国产高清综合 | www.人人草 | 黄色资源网站 | 国产精品一区二区在线观看 | 久久午夜网 | 亚洲狠狠 | 日韩高清在线一区二区 | 久久久久国产精品午夜一区 | 一区二区视频网站 | 日本免费久久高清视频 | 最近中文字幕大全中文字幕免费 | 国产成人精品久 | 婷婷5月色 | 欧美色图亚洲图片 | 国产男女免费完整视频 | 人人狠狠综合久久亚洲婷 | 中文字幕人成乱码在线观看 | 欧洲视频一区 | 国产精品麻豆一区二区三区 | 国产一区二区三区四区在线 | 久久天天躁夜夜躁狠狠85麻豆 | 成人久久久精品国产乱码一区二区 | av大片免费| av黄在线播放 | 国产精品免费一区二区三区在线观看 | 日本三级久久久 | 99久e精品热线免费 99国产精品久久久久久久久久 | 国产直播av | 日韩羞羞 | 午夜精品福利一区二区三区蜜桃 | 三级黄色在线 | 色诱亚洲精品久久久久久 | 国产高清在线视频 | 日韩丝袜视频 | 麻豆成人精品视频 | 国产精品久久久久久久久久久杏吧 | 黄色电影在线免费观看 | 久热爱 | 欧美色综合久久 | 奇人奇案qvod | 久久久受www免费人成 | 人人玩人人添人人 | 色综合天天色综合 | 国产精品第一页在线观看 | 天天射天天爱天天干 | 国产美腿白丝袜足在线av | 亚洲 av网站 | www.99久久.com | 久视频在线播放 | 国产18精品乱码免费看 | 在线 国产 亚洲 欧美 | 中文字幕在线观看一区 | 在线观看中文字幕网站 | 欧美一级特黄高清视频 | 超碰人人乐 | 毛片永久免费 | 香蕉视频在线网站 | 日韩高清黄色 | 狠狠久久综合 | 免费三级大片 | av免费在线观看网站 | 亚洲精品 在线视频 | 正在播放 国产精品 | 日韩中文幕 | 天天操月月操 | 一级黄色片在线免费观看 | www.天天干.com | 国产在线2020 | 蜜桃视频在线视频 | 国内毛片毛片 | 久久这里有精品 | 不卡的av电影| 成人免费毛片aaaaaa片 | 成人福利在线观看 | 黄色毛片视频免费观看中文 | 日韩在线小视频 | 夜夜躁狠狠躁日日躁视频黑人 | 一级性生活片 | 亚洲国产欧洲综合997久久, | 深爱五月网 | 999毛片 | 国产亚洲欧美在线视频 | 久久久免费毛片 | 中文字幕在线观看免费高清电影 | 亚洲欧洲精品一区二区 | 狠狠色噜噜狠狠狠合久 | 99免费在线观看视频 | 中文字幕日本在线观看 | 婷婷色中文字幕 | 欧美aa级| 玖玖视频国产 | 欧美日韩国产精品爽爽 | 久草视频99 | 色综合天天射 | 天天综合狠狠精品 | 亚洲一区 影院 | 欧美性做爰猛烈叫床潮 | 国产专区欧美专区 | 久久久精品久久 | a天堂中文在线 | 久久国产热视频 | 最新中文字幕在线观看视频 | 蜜臀av麻豆 | 欧美美女激情18p | 国产一级特黄毛片在线毛片 | 九色视频网 | 天堂av在线网址 | 婷婷综合电影 | 欧美色图狠狠干 | 日韩av二区 | 亚洲精品在线网站 | 在线三级播放 | 九九久久久久99精品 | 五月婷婷激情六月 | 夜色成人av | 欧美日韩一区二区三区免费视频 | 国产亚洲一区 | 五月天综合网 | 午夜电影久久久 | 亚洲一区 av| 久久精品黄 | 日韩精品在线看 | 最近的中文字幕大全免费版 | 欧美日韩中文国产 | 欧美精品在线免费 | 男女拍拍免费视频 | 亚洲成av人片在线观看无 | 视频在线在亚洲 | 免费国产ww | 超碰97免费 | 一区二区三区在线播放 | 亚洲涩涩一区 | 成年人免费电影在线观看 | 天天操天天干天天插 | 久久久久久中文字幕 | 91亚洲精品乱码久久久久久蜜桃 | 一区二区三区精品在线视频 | 特级西西444www大精品视频免费看 | 99久久精品一区二区成人 | 国产亚洲精品精品精品 | 免费看黄在线 | 最新日本中文字幕 | 美女亚洲精品 | 91看片在线观看 | 五月天亚洲婷婷 | 国产一区电影在线观看 | 黄污视频网站 | 97碰碰视频 | 国产欧美在线一区二区三区 | 亚洲成人动漫在线观看 | 爱av在线网| 日韩超碰在线 | 99久久精品无码一区二区毛片 | 免费av在线播放 | 欧美不卡在线 | 色爽网站 | 成人av电影免费观看 | 国产在线观看av | 欧美aⅴ在线观看 | 国产精品亚洲成人 | 国产在线色 | 午夜精品一二三区 | 亚洲欧美精品一区二区 | 青青五月天 | 精品视频不卡 | 中文字幕亚洲精品日韩 | 热99在线视频 | 久久激情电影 | 中文字幕永久在线 | 特级毛片爽www免费版 | 免费网站v | 97视频免费在线观看 | 久久99亚洲精品 | 久久免费在线视频 | 久久精品视频免费观看 | 日本精品视频在线播放 | 亚洲黄网站 | 婷婷久操| 麻豆免费视频网站 | 久久综合九色综合97_ 久久久 | 久久综合免费 | 成人av在线直播 | 人人爱人人舔 | 国产精品久久久久久久久久免费看 | 98涩涩国产露脸精品国产网 | 精品一区二区三区香蕉蜜桃 | 国产精品24小时在线观看 | 日韩欧美精品在线 | 亚洲国产精品va在线 | 色婷久久 | 久久这里只有精品视频首页 | 久久久久黄 | 欧美一二三视频 | av免费网站在线观看 | 免费h精品视频在线播放 | 91精品一区国产高清在线gif | 久久tv视频 | 999久久久久久久久久久 | 超碰人人国产 | 性色av一区二区三区在线观看 | 色综合亚洲精品激情狠狠 | 伊人久久国产精品 | 91亚·色 | 婷五月天激情 | 久草在线播放视频 | 欧美日韩国产精品爽爽 | 99精品视频免费全部在线 | 欧美日韩观看 | 91成人在线网站 | 手机看片 | 免费无遮挡动漫网站 | 精品99免费 | 天天爱天天插 | 久久久免费看视频 | 久久精品精品电影网 | 婷婷色综合网 | 国产精品原创av片国产免费 | 国产手机在线观看 | 精品在线观看一区二区 | 成人毛片在线观看 | 三级黄色免费片 | 欧美激情视频在线观看免费 | 午夜国产在线 | 国产手机在线精品 | 伊人狠狠色 | 免费一区在线 | 国产精品成人免费精品自在线观看 | 久久久国产网站 | 婷婷成人亚洲综合国产xv88 | 久久精品伊人 | 在线国产一区 | 日本字幕网 | 日日碰狠狠添天天爽超碰97久久 | 中文字幕国语官网在线视频 | 国产在线观看xxx | 日韩电影在线观看一区 | 国产成人精品免费在线观看 | 久久综合色一综合色88 | 中文字幕亚洲欧美 | 正在播放国产一区 | 国产视频欧美视频 | 国产精品福利久久久 | 天无日天天操天天干 | 久久久鲁 | 美女网站在线看 | 成人永久免费 | 国产大陆亚洲精品国产 | 色www永久免费 | 日韩欧美视频 | 99热精品国产一区二区在线观看 | 五月开心婷婷网 | 久久成人亚洲欧美电影 | 精品国产一区二区三区蜜臀 | 国产精品久久一区二区三区, | 狠狠色丁香婷婷综合视频 | 91丨九色丨蝌蚪丨对白 | 久久伊人色综合 | 日本不卡123区 | 五月综合网站 | 精品色综合 | 免费在线电影网址大全 | 婷婷久久五月天 | 亚洲国产视频在线 | 久久国内视频 | 久久国产精品系列 | 在线观看韩日电影免费 | 日韩网站在线看片你懂的 | www.狠狠操| 成年人免费在线观看网站 | 97超碰在线播放 | 99精品小视频 | 婷婷激情综合 | 黄色天堂在线观看 | 激情网在线观看 | 久久久久 | 国产成人精品一区二区三区网站观看 | 亚洲精品国产精品国自产在线 | 国产成人av福利 | 狠狠色狠狠综合久久 | av色一区 | 91视频免费观看 | a在线播放| 激情偷乱人伦小说视频在线观看 | zzijzzij日本成熟少妇 | 国产99久久久国产精品成人免费 | 亚洲成a人片在线观看中文 中文字幕在线视频第一页 狠狠色丁香婷婷综合 | 成在人线av | 欧洲黄色片| 亚洲精品视 | 日日日日| 久久国产精品99久久人人澡 | 久在线观看视频 | 色综合天天色 | 国产九九九九九 | a级国产乱理论片在线观看 伊人宗合网 | 在线影视 一区 二区 三区 | 亚洲欧美日韩国产精品一区午夜 | 日韩免费高清 | 亚洲精品国内 | 91视频免费 | 国产综合在线观看视频 | 婷婷激情综合五月天 | 国产一级精品视频 | 麻花豆传媒mv在线观看网站 | 五月天综合激情 | 麻豆高清免费国产一区 | 成年人免费av网站 | 国产成人精品一区二区三区 | 久久美女免费视频 | 亚洲狠狠| 亚洲精品xxxx | 国产小视频在线看 | 人人草在线视频 | 在线看一区 | 在线观看久久久久久 | 亚洲电影影音先锋 | 久久不射电影网 | 久久伊人国产精品 | 欧美日韩一区三区 | 深爱激情五月婷婷 | 日韩精品2区 | 精品国产一区在线观看 | 国产品久精国精产拍 | 香蕉视频色 | 久久夜色电影 | 18国产精品白浆在线观看免费 | 国产美女无遮挡永久免费 | 九九免费精品视频在线观看 | 夜夜躁狠狠躁日日躁视频黑人 | 成年人免费av网站 | 午夜狠狠干 | 亚洲精品乱码久久久久久9色 | 日日操日日插 | 日韩久久久| 中中文字幕av在线 | 日韩在线精品视频 | 黄色精品一区二区 | 亚洲激情电影在线 | 久久99精品视频 | 久操操| 欧美男女爱爱视频 | avwww在线| 伊人婷婷综合 | 日韩视频一区二区在线观看 | 成人免费看片网址 | 久久久黄视频 | 色小说av | 国产在线精品二区 | 伊人资源视频在线 | 免费看黄色毛片 | 97碰碰碰 | 国产又粗又硬又爽的视频 | 四虎成人精品在永久免费 | 国产精品久久久久一区二区 | 91视频麻豆| 精品毛片久久久久久 | 欧美精品999 | 香蕉视频免费在线播放 | 国产精品免费不卡 | 免费一级片在线 | 久久免费一级片 | 天天干一干 | 欧美日韩一区三区 | 久久99精品久久只有精品 | www.夜色321.com | 亚洲综合激情网 | 九九热在线精品 | 天堂在线免费视频 | 国产亚洲在线观看 | 中文字幕欧美日韩va免费视频 | 免费在线观看视频一区 | 日韩av片免费在线观看 | 成人av免费电影 | 丝袜美腿在线视频 | 99热9| 亚洲视频99 | 亚洲国产成人精品在线观看 | 91大神免费视频 | 黄色avwww | 在线观看视频国产一区 | 99人成在线观看视频 | 欧美夫妻生活视频 | 欧美另类巨大 | 免费h精品视频在线播放 | 色综合中文字幕 | 欧美淫视频 | 久久九九国产视频 | 在线一二区 | 亚洲激情 在线 | 午夜视频在线观看欧美 | 91精品国产91热久久久做人人 | 欧美日韩激情视频8区 | 91九色成人 | 中文字幕在线观看亚洲 | 久黄色| 久久夜色精品国产欧美一区麻豆 | 色是在线视频 | 网站免费黄 | 成人av日韩| 中文字幕二区三区 | 国产精品久久艹 | 日韩av一区二区三区四区 | 日韩高清一 | 视频一区在线免费观看 | 香蕉97视频观看在线观看 | 亚洲精品免费在线视频 | 久久高清国产 | 婷婷精品国产欧美精品亚洲人人爽 | 男女日麻批 | 久久久国产视频 | 五月激情综合婷婷 | 黄色av高清 | 天天爱天天干天天爽 | 国产精品对白一区二区三区 | 欧美亚洲三级 | 欧美日韩一级视频 | 精品国产免费久久 | 中国成人一区 | 伊人国产视频 | 国产手机免费视频 | 成人黄色大片 | 久久黄网站 | 久久久免费av| 高潮久久久久久久久 | 丁香花中文字幕 | 国产一级性生活视频 | 国产精品99久久久久久久久 | 亚洲精品国偷拍自产在线观看 | 在线国产视频一区 | 久久撸在线视频 | 欧美一二三区播放 | 国产不卡精品视频 | 国产中文在线字幕 | 日韩电影中文字幕在线观看 | 欧美日韩不卡一区二区三区 | 99精品国产在热久久下载 | 99久热在线精品视频成人一区 | 国产精品麻豆三级一区视频 | 日本激情视频中文字幕 | 久久99国产精品免费网站 | 精品中文字幕在线播放 | 亚洲理论视频 | 国产日产精品一区二区三区四区的观看方式 | 久久精品美女视频 | 婷婷色狠狠 | 亚洲 欧美 另类人妖 | 国产高清免费在线播放 | 欧美国产视频在线 | 91麻豆精品国产91久久久久久久久 | 97色免费视频| 99精品黄色 | www.夜色321.com | 日韩一区二区三区在线看 | 欧美一区二区视频97 | 国产精品久久久久久a | 中文字幕乱码在线播放 | 精品久久九九 | 免费观看91视频 | www.99久久.com| 91成人亚洲| 欧美午夜精品久久久久久浪潮 | 欧美激情视频一区二区三区 | 日韩一区二区免费在线观看 | 日韩天堂网 | 中文字幕在线免费看 | 欧美一二三区播放 | 一级片免费视频 | 免费日韩 精品中文字幕视频在线 | 在线视频 国产 日韩 | 国产午夜不卡 | 亚洲首页 | 日韩特黄一级欧美毛片特黄 | 91视频麻豆 | 91自拍91| 97国产精品一区二区 | 欧美国产日韩在线视频 | 毛片久久久 | 日韩精品欧美专区 | 中文字幕av免费 | 中文亚洲欧美日韩 | 色a资源在线 | 国产精品18久久久久久首页狼 | 国产二区视频在线观看 | 美女很黄免费网站 | 激情视频在线观看网址 | 日韩激情一二三区 | 在线日本v二区不卡 | 国产高清在线免费 | 韩国av一区二区三区 | 少妇av片 | 久久r精品 | 激情欧美一区二区三区 | 国产精品露脸在线 | 精品国产一区二区三区免费 | 久久久激情网 | 亚洲精品久久久蜜桃 | 91精品视频播放 | 久久不卡电影 | 久久视频免费 | 久久久久北条麻妃免费看 | 韩国av一区二区三区 | 日韩欧美精品免费 | 国产小视频网站 | 婷婷伊人综合 | 精品一区电影国产 | 婷婷色在线播放 | 日韩丝袜视频 | 中文字幕在线观看完整 | 亚洲综合色网站 | av黄网站| 国产成人精品一区二区三区在线观看 | 天天干天天操天天 | 久久艹综合 | 九九热免费观看 | 亚洲伊人网在线观看 | 黄色一级在线免费观看 | 欧美日韩高清在线 | 一本一本久久a久久精品牛牛影视 | 中文字幕一区二区三区四区久久 | 97精品视频在线播放 | 九九涩涩av台湾日本热热 | 91精品视频免费在线观看 | 国产精品成人久久 | 天天射网站 | 久久精品视频国产 | 在线观看一级 | 色婷婷免费视频 | 天天亚洲 | 久久精品国产免费看久久精品 | 人人插人人草 | 热精品| 国产精品中文字幕av | 久久国产精品成人免费浪潮 | 伊人电影天堂 | 亚洲精品久久久蜜臀下载官网 | 黄网站色视频 | 免费影视大全推荐 | 天天色天天综合网 | 亚洲精品免费在线播放 | 一区二区三区精品在线视频 | 69亚洲视频 | 午夜视频免费在线观看 | 久久99精品久久久久久三级 | 国产精品久久久久久av | 日韩精品在线视频免费观看 | 91看片在线| 亚洲精品国产麻豆 | 91大神dom调教在线观看 | 欧美激情综合色综合啪啪五月 | 国产高清视频 | 国产免费观看av | 亚洲电影一区二区 | 国产精品久久久久久久久久免费看 | 99久久精品视频免费 | 日韩xxx视频| 97涩涩视频 | 黄色成人影视 | 国产精品黄色 | 人人干狠狠干 | 久草网站在线观看 | 亚洲精欧美一区二区精品 | 91麻豆精品久久久久久 | 欧美韩日在线 | 国产在线 一区二区三区 | 久久国产精品99久久久久久老狼 | 久久综合九色欧美综合狠狠 | 久久黄色影院 | 久久96| 亚洲综合在线一区二区三区 | av电影免费在线看 | 精品久久久免费 | 91视频久久久久 | 国产精品九九九九九 | 欧美久久九九 | 色婷婷丁香 | 免费精品国产va自在自线 | 久久欧美综合 | 草久在线 | 国产69精品久久app免费版 | 超碰97人人干 | 婷婷色九月| 天天干,狠狠干 | 久草久草在线 | 国产一区在线视频观看 | 国产精品免费久久久久久久久久中文 | 久久黄色免费 | 在线播放亚洲激情 | 91在线区 | 日韩大陆欧美高清视频区 | 亚洲一区黄色 | 成年人精品 | 九七在线视频 | 欧美日韩一区二区三区免费视频 | 9992tv成人免费看片 | 97精品在线观看 | 最新色视频| 国产福利免费看 | 四虎影视精品 | 中文字幕乱码一区二区 | 亚洲国产精品久久久久久 | 国产一性一爱一乱一交 | 毛片网站在线 | 少妇性aaaaaaaaa视频 | 婷婷中文字幕 | 不卡精品视频 | 超级碰碰碰碰 | 精品免费 | 亚洲欧洲视频 | 色综合久久五月天 | 99热在线这里只有精品 | 日韩午夜精品福利 | 啪啪午夜免费 | 国产黑丝一区二区 | 国产高清av | 成人三级网址 | 日本精品视频一区二区 | 久久99精品久久久久婷婷 | 国产丝袜 | 亚洲黄色一级视频 | 色播五月婷婷 | 亚洲国产成人高清精品 | 99精品黄色片免费大全 | 中国一级片免费看 | 亚洲激情精品 | 在线免费高清视频 | 国产精品久久久久久久久久久不卡 | 中文字幕在线观看视频免费 | 99爱视频| 黄色精品久久 | 黄av资源| 亚洲最大成人免费网站 | 欧美日韩天堂 | 国产又粗又猛又黄又爽 | 亚洲乱码国产乱码精品天美传媒 | 黄色av免费在线 | 日韩亚洲在线观看 | 西西www4444大胆视频 | 91在线看免费 | 亚洲视频免费在线 | 深爱激情婷婷网 | 欧亚久久 | 久久躁日日躁aaaaxxxx | 91大片网站 | 日韩av综合网站 | 日韩在线 一区二区 | 天天干人人干 | 亚洲国产欧美在线看片xxoo | 91亚洲精 | 国产精品尤物视频 | 99超碰在线观看 | 婷婷.com| 天天操天天舔天天干 | 精品福利视频在线 | 91综合色 | 玖玖玖影院 | 国产区精品视频 | 久久高清国产视频 | 欧美伦理一区 | 蜜桃视频色 | 亚洲免费激情 | 99资源网| 亚洲国产精品一区二区久久hs | 成年一级片 | 免费观看黄| 国产福利一区二区在线 | 免费一级黄色 | 日韩在线观看一区 | а中文在线天堂 | 久久国语露脸国产精品电影 | 国产精品入口传媒 | 日韩视频在线观看视频 | 国产精品一区二区三区99 | 成人影音在线 | 精品一区二区久久久久久久网站 | 日韩免费视频网站 | www色av| 在线观看一区视频 | 欧美成人久久 | 久久手机在线视频 | 超碰在线人人艹 | 久久av免费观看 | 精品久久久亚洲 | 久久怡红院 | 91丨九色丨蝌蚪丨老版 | 黄色大片中国 | 激情www | 日韩成人免费在线 | 日韩免费中文字幕 | 91视频在线网址 | 亚洲美女在线国产 | 热精品| 91在线你懂的 | 一级特黄aaa大片在线观看 | 人人人爽 | 四虎www com | 日韩欧美视频一区二区 | 国产黄视频在线观看 | www.五月婷| 精品不卡av | 午夜色影院 | 欧美日韩视频在线一区 | 国产最顶级的黄色片在线免费观看 | 色网站视频 | 91久久偷偷做嫩草影院 | 四虎伊人| 国产手机在线观看 | 综合在线亚洲 | 激情丁香综合五月 | 亚洲色图 校园春色 | 国产一级电影免费观看 | 亚洲人成人99网站 | 亚洲一二三久久 | 国产精品视频免费在线观看 | 国产精彩视频一区 | 国产操在线 | 2021国产在线视频 | 99视频国产精品 | 中文字幕美女免费在线 | 久久精品视 | 五月开心激情网 | 精品国产诱惑 | 久久精品久久精品久久39 | 日韩资源在线观看 | 国产午夜剧场 | 一区二区三区在线观看免费 | 欧美精品黑人性xxxx | 亚州国产精品视频 | 成年人看片 | av动态图片| 夜夜操综合网 | 波多野结衣精品在线 | 丁香婷婷基地 | 午夜精品视频免费在线观看 | 成人蜜桃网 | 麻豆视频免费入口 | 成年人在线免费看视频 | 婷婷激情5月天 | 日韩视频在线不卡 | 蜜臀精品久久久久久蜜臀 | 成人精品视频久久久久 | 在线播放精品一区二区三区 | 国内精品久久久久影院优 | 免费中文字幕在线观看 | 波多野结衣最新 | 国产视频观看 | av黄色在线| 伊人伊成久久人综合网站 | 中文字幕视频在线播放 | 精品视频免费观看 | 二区三区精品 | 麻豆影视网站 | 亚洲午夜精品久久久久久久久久久久 | 久久天天躁狠狠躁亚洲综合公司 | 99精品国产在热久久 | www欧美色| 成人一级免费视频 | 天天操夜夜叫 | 国产99re| 免费视频久久 | 日本中文不卡 | 最近最新最好看中文视频 | 免费试看一区 | 69精品久久 | 96久久精品 | 婷婷亚洲综合五月天小说 | 中文字幕在线观看你懂的 | 久久99久久精品国产 | 国产成人a亚洲精品v | 国产精品一区二区在线看 | 国产自偷自拍 | 久久久久久中文字幕 | 大型av综合网站 | 99久久国产免费,99久久国产免费大片 | 婷婷久久亚洲 | 热久久精品在线 | 香蕉影院在线 | 精品一区精品二区高清 | 中文在线免费一区三区 | 日韩在线中文字幕视频 | 亚洲精品毛片一级91精品 | 国产精品嫩草影院123 | 黄色www免费 | www.五月天激情 | 久久第四色 | 久久tv | 亚洲欧美日韩精品久久奇米一区 | 97免费| 日韩精品一区二区三区丰满 | 激情电影在线观看 | 色综合久久五月 | 欧美综合在线视频 | 黄色的视频 | 中文国产在线观看 | av在线免费播放 | 天天操网 | 99精品小视频 | 久久免费一级片 | 国产成人一区二区三区在线观看 | 久久伊人精品一区二区三区 | 午夜18视频在线观看 | 免费进去里的视频 | 中文字幕高清免费日韩视频在线 | 亚洲天堂色婷婷 | 色网站视频 | 中文字幕中文字幕在线中文字幕三区 | 国产精品久久久av久久久 | 国产不卡在线看 | 国产精品人人做人人爽人人添 | 久草免费在线视频 | 成人h视频 | 亚洲精品乱码 | 天天草综合 | 麻豆91在线 | 欧美一区免费观看 | 日本激情中文字幕 | 日韩成人免费在线观看 | 九九综合久久 | 国产精品永久久久久久久久久 | 麻豆一精品传二传媒短视频 | av在观看 | 国产一级片久久 | 三级小视频在线观看 | 国产精品视频内 | 色综合五月 | 在线观看av麻豆 | 久久久国产视频 | 久久久久久久久亚洲精品 | 国产欧美日韩一区 | 国产视频在线看 | 日韩欧美精品一区二区三区经典 | 国产精品观看在线亚洲人成网 | 中文字幕色综合网 | 91欧美日韩国产 | 国产精品av电影 | 亚洲永久精品在线观看 | 欧美一区二区三区在线 | 99久久国产免费,99久久国产免费大片 | 国产伦精品一区二区三区免费 | 91在线国内视频 |