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

Android分辨率適配小試牛刀

移動開發 Android
大家在Android開發時,肯定會覺得屏幕適配是個尤其痛苦的事,各種屏幕尺寸適配起來蛋疼無比。然而,Android對于不同的屏幕給出的適配方案是dp,那么dp與百分比的差距到底在哪里?

概述

大家在Android開發時,肯定會覺得屏幕適配是個尤其痛苦的事,各種屏幕尺寸適配起來蛋疼無比。如果我們換個角度我們看下這個問題,不知道大家有沒有了解過web前端開發,或者說大家對于網頁都不陌生吧,其實適配的問題在web頁面的設計中理論上也存在,為什么這么說呢?電腦的顯示器的分辨率、包括手機分辨率,我敢說分辨率的種類遠超過Android設備的分辨率,那么有一個很奇怪的現象:

為什么Web頁面設計人員從來沒有說過,尼瑪適配好麻煩?

那么,到底是什么原因,讓網頁的設計可以在千差萬別的分辨率的分辨率中依舊能給用戶一個優質的體驗呢?帶著這個疑惑,我問了下媳婦(前端人員),媳婦睜大眼睛問我:什么叫適配?fc,尼瑪,看來的確沒有這類問題。后來再我仔細的追問后,她告訴我,噢,這個尺寸呀,我都是設置為20%的~~追根到底,其實就是一個原因,網頁提供了百分比計算大小。

同樣的,大家拿到UI給的設計圖以后,是不是抱怨過尼瑪你標識的都是px,我項目里面用dp,這什么玩意,和UI人員解釋,UI妹妹也不理解。那么本例同樣可以解決Android工程師和UI妹妹間的矛盾~UI給出一個固定尺寸的設計稿,然后你在編寫布局的時候不用思考,無腦照抄上面標識的像素值,就能達到完美適配,理想豐不豐滿~~。

然而,Android對于不同的屏幕給出的適配方案是dp,那么dp與百分比的差距到底在哪里?

dp vs 百分比

dp

我們首先看下dp的定義:

Density-independent pixel (dp)獨立像素密度。標準是160dip.即1dp對應1個pixel,計算公式如:px = dp * (dpi / 160),屏幕密度越大,1dp對應 的像素點越多。

上面的公式中有個dpi,dpi為DPI是Dots Per Inch(每英寸所打印的點數),也就是當設備的dpi為160的時候1px=1dp;

好了,上述這些概念記不記得住沒關系,只要記住一點dp是與像素無關的,在實際使用中1dp大約等于1/160inch。

那么dp究竟解決了適配上的什么問題?可以看出1dp = 1/160inch;那么它至少能解決一個問題,就是你在布局文件寫某個View的寬和高為160dp160dp,這個View在任何分辨率的屏幕中,顯示的尺寸大小是大約是一致的(可能不精確),大概是 1 inch 1 inch。

但是,這樣并不能夠解決所有的適配問題:

呈現效果仍舊會有差異,僅僅是相近而已

當設備的物理尺寸存在差異的時候,dp就顯得無能為力了。為4.3寸屏幕準備的UI,運行在5.0寸的屏幕上,很可能在右側和下側存在大量的空白。而5.0寸的UI運行到4.3寸的設備上,很可能顯示不下。

以上兩點,來自參考鏈接1

一句話,總結下,dp能夠讓同一數值在不同的分辨率展示出大致相同的尺寸大小。但是當設備的尺寸差異較大的時候,就無能為力了。適配的問題還需要我們自己去做,于是我們可能會這么做:

  1. <?xml version="1.0" encoding="utf-8"?>   
  2. <resources>   
  3.     <!-- values-hdpi 480X800 -->   
  4.     <dimen name="imagewidth">120dip</dimen>       
  5. </resources>   
  6.  
  7. <resources>   
  8.     <!-- values-hdpi-1280x800 -->   
  9.     <dimen name="imagewidth">220dip</dimen>       
  10. </resources>   
  11.  
  12. <?xml version="1.0" encoding="utf-8"?>   
  13. <resources>   
  14.     <!-- values-hdpi  480X320 -->   
  15.     <dimen name="imagewidth">80dip</dimen>       
  16. </resources>  

 

上述代碼片段來自網絡,也就是說,我們為了優質的用戶體驗,依然需要去針對不同的dpi設置,編寫多套數值文件。

可以看出,dp并沒有能解決適配問題。下面看百分比。

百分比

這個概念不用說了,web中支持控件的寬度可以去參考父控件的寬度去設置百分比,最外層控件的寬度參考屏幕尺寸設置百分比,那么其實中Android設備中,只需要支持控件能夠參考屏幕的百分比去計算寬高就足夠了。

比如,我現在以下幾個需求:

對于圖片展示的Banner,為了起到該有的效果,我希望在任何手機上顯示的高度為屏幕高度的1/4

我的首頁分上下兩欄,我希望每個欄目的屏幕高度為11/24,中間間隔為1/12

slidingmenu的寬度為屏幕寬度的80%

當然了這僅僅是從一個大的層面上來說,其實小范圍布局,可能百分比將會更加有用。

那么現在不支持百分比,實現上述的需求,可能需要1、代碼去動態計算(很多人直接pass了,太麻煩);2、利用weight(weight必須依賴Linearlayout,而且并不能適用于任何場景)

再比如:我的某個浮動按鈕的高度和寬度希望是屏幕高度的1/12,我的某個Button的寬度希望是屏幕寬度的1/3。上述的所有的需求,利用dp是無法完成的,我們希望控件的尺寸可以按照下列方式編寫:

  1. <Button 
  2.         android:text="@string/hello_world" 
  3.         android:layout_width="20%w" 
  4.         android:layout_height="10%h"/> 

 

利用屏幕的寬和高的比例去定義View的寬和高。

好了,到此我們可以看到dp與百分比的區別,而百分比能夠更好的解決我們的適配問題。

some 適配tips

我們再來看看一些適配的tips

多用match_parent

多用weight

自定義view解決

其實上述3點tip,歸根結底還是利用百分比,match_parent相當于100%參考父控件;weight即按比例分配;自定義view無非是因為里面多數尺寸是按照百分比計算的;

通過這些tips,我們更加的看出如果能在Android中引入百分比的機制,將能解決大多數的適配問題,下面我們就來看看如何能夠讓Android支持百分比的概念。

百分比的引入

1、引入

其實我們的解決方案,就是在項目中針對你所需要適配的手機屏幕的分辨率各自簡歷一個文件夾。

如下圖:

 

 

然后我們根據一個基準,為基準的意思就是:

比如480*320的分辨率為基準

寬度為320,將任何分辨率的寬度分為320份,取值為x1-x320

高度為480,將任何分辨率的高度分為480份,取值為y1-y480

例如對于800*480的寬度480:

 

 

可以看到x1 = 480 / 基準 = 480 / 320 = 1.5 ;其他分辨率類似~~

你可能會問,這么多文件,難道我們要手算,然后自己編寫?不要怕,下文會說。

那么,你可能有個疑問,這么寫有什么好處呢?

假設我現在需要在屏幕中心有個按鈕,寬度和高度為我們屏幕寬度的1/2,我可以怎么編寫布局文件呢?

  1. <FrameLayout > 
  2.  
  3. <Button 
  4.  
  5. android:layout_gravity="center" 
  6.  
  7. android:gravity="center" 
  8.  
  9. android:text="@string/hello_world" 
  10.  
  11. android:layout_width="@dimen/x160" 
  12.  
  13. android:layout_height="@dimen/x160"/> 
  14.  
  15. </FrameLayout> 

 

可以看到我們的寬度和高度定義為x160,其實就是寬度的50%;

那么效果圖:

 

 

可以看到不論在什么分辨率的機型,我們的按鈕的寬和高始終是屏幕寬度的一半。

對于設計圖

假設現在的UI的設計圖是按照480*320設計的,且上面的寬和高的標識都是px的值,你可以直接將px轉化為x[1-320],y[1-480],這樣寫出的布局基本就可以全分辨率適配了。

你可能會問:設計師設計圖的分辨率不固定怎么辦?下文會說~

對于上文提出的幾個dp做不到的

你可以通過在引入百分比后,自己試試~~

好了,有個最主要的問題,我們沒有說,就是分辨率這么多,尼瑪難道我們要自己計算,然后手寫?

2、自動生成工具

好了,其實這樣的文件夾手寫也可以,按照你們需要支持的分辨率,然后編寫一套,以后一直使用。

當然了,作為程序員的我們,怎么能做這么low的工作,肯定要程序來實現:

那么實現需要以下步驟:

1).分析需要的支持的分辨率

對于主流的分辨率我已經集成到了我們的程序中,當然對于特殊的,你可以通過參數指定。關于屏幕分辨率信息,可以通過該網站查詢:http://screensiz.es/phone| 00daae956ab82373e1f8431e7cd28c3516 |

2).編寫自動生成文件的程序

代碼如下

  1. import java.io.File; 
  2. import java.io.FileNotFoundException; 
  3. import java.io.FileOutputStream; 
  4. import java.io.PrintWriter; 
  5.  
  6. /** 
  7.  * Created by zhy on 15/5/3. 
  8.  */ 
  9. public class GenerateValueFiles { 
  10.  
  11.     private int baseW; 
  12.     private int baseH; 
  13.  
  14.     private String dirStr = "./res"
  15.  
  16.     private final static String WTemplate = "<dimen name=\"x{0}\">{1}px</dimen>\n"
  17.     private final static String HTemplate = "<dimen name=\"y{0}\">{1}px</dimen>\n"
  18.  
  19.     /** 
  20.      * {0}-HEIGHT 
  21.      */ 
  22.     private final static String VALUE_TEMPLATE = "values-{0}x{1}"
  23.  
  24.     private static final String SUPPORT_DIMESION = "320,480;480,800;480,854;540,960;600,1024;720,1184;720,1196;720,1280;768,1024;800,1280;1080,1812;1080,1920;1440,2560;"
  25.  
  26.     private String supportStr = SUPPORT_DIMESION; 
  27.  
  28.     public GenerateValueFiles(int baseX, int baseY, String supportStr) { 
  29.         this.baseW = baseX; 
  30.         this.baseH = baseY; 
  31.  
  32.         if (!this.supportStr.contains(baseX + "," + baseY)) { 
  33.             this.supportStr += baseX + "," + baseY + ";"
  34.         } 
  35.  
  36.         this.supportStr += validateInput(supportStr); 
  37.  
  38.         System.out.println(supportStr); 
  39.  
  40.         File dir = new File(dirStr); 
  41.         if (!dir.exists()) { 
  42.             dir.mkdir(); 
  43.  
  44.         } 
  45.         System.out.println(dir.getAbsoluteFile()); 
  46.  
  47.     } 
  48.  
  49.     /** 
  50.      * @param supportStr 
  51.      *            w,h_...w,h; 
  52.      * @return 
  53.      */ 
  54.     private String validateInput(String supportStr) { 
  55.         StringBuffer sb = new StringBuffer(); 
  56.         String[] vals = supportStr.split("_"); 
  57.         int w = -1; 
  58.         int h = -1; 
  59.         String[] wh; 
  60.         for (String val : vals) { 
  61.             try { 
  62.                 if (val == null || val.trim().length() == 0) 
  63.                     continue
  64.  
  65.                 wh = val.split(","); 
  66.                 w = Integer.parseInt(wh[0]); 
  67.                 h = Integer.parseInt(wh[1]); 
  68.             } catch (Exception e) { 
  69.                 System.out.println("skip invalidate params : w,h = " + val); 
  70.                 continue
  71.             } 
  72.             sb.append(w + "," + h + ";"); 
  73.         } 
  74.  
  75.         return sb.toString(); 
  76.     } 
  77.  
  78.     public void generate() { 
  79.         String[] vals = supportStr.split(";"); 
  80.         for (String val : vals) { 
  81.             String[] wh = val.split(","); 
  82.             generateXmlFile(Integer.parseInt(wh[0]), Integer.parseInt(wh[1])); 
  83.         } 
  84.  
  85.     } 
  86.  
  87.     private void generateXmlFile(int w, int h) { 
  88.  
  89.         StringBuffer sbForWidth = new StringBuffer(); 
  90.         sbForWidth.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); 
  91.         sbForWidth.append("<resources>"); 
  92.         float cellw = w * 1.0f / baseW; 
  93.  
  94.         System.out.println("width : " + w + "," + baseW + "," + cellw); 
  95.         for (int i = 1; i < baseW; i++) { 
  96.             sbForWidth.append(WTemplate.replace("{0}", i + "").replace("{1}"
  97.                     change(cellw * i) + "")); 
  98.         } 
  99.         sbForWidth.append(WTemplate.replace("{0}", baseW + "").replace("{1}"
  100.                 w + "")); 
  101.         sbForWidth.append("</resources>"); 
  102.  
  103.         StringBuffer sbForHeight = new StringBuffer(); 
  104.         sbForHeight.append("<?xml version=\"1.0\" encoding=\"utf-8\"?>\n"); 
  105.         sbForHeight.append("<resources>"); 
  106.         float cellh = h *1.0f/ baseH; 
  107.         System.out.println("height : "+ h + "," + baseH + "," + cellh); 
  108.         for (int i = 1; i < baseH; i++) { 
  109.             sbForHeight.append(HTemplate.replace("{0}", i + "").replace("{1}"
  110.                     change(cellh * i) + "")); 
  111.         } 
  112.         sbForHeight.append(HTemplate.replace("{0}", baseH + "").replace("{1}"
  113.                 h + "")); 
  114.         sbForHeight.append("</resources>"); 
  115.  
  116.         File fileDir = new File(dirStr + File.separator 
  117.                 + VALUE_TEMPLATE.replace("{0}", h + "")// 
  118.                         .replace("{1}", w + "")); 
  119.         fileDir.mkdir(); 
  120.  
  121.         File layxFile = new File(fileDir.getAbsolutePath(), "lay_x.xml"); 
  122.         File layyFile = new File(fileDir.getAbsolutePath(), "lay_y.xml"); 
  123.         try { 
  124.             PrintWriter pw = new PrintWriter(new FileOutputStream(layxFile)); 
  125.             pw.print(sbForWidth.toString()); 
  126.             pw.close(); 
  127.             pw = new PrintWriter(new FileOutputStream(layyFile)); 
  128.             pw.print(sbForHeight.toString()); 
  129.             pw.close(); 
  130.         } catch (FileNotFoundException e) { 
  131.             e.printStackTrace(); 
  132.         } 
  133.     } 
  134.  
  135.     public static float change(float a) { 
  136.         int temp = (int) (a * 100); 
  137.         return temp / 100f; 
  138.     } 
  139.  
  140.     public static void main(String[] args) { 
  141.         int baseW = 320; 
  142.         int baseH = 400; 
  143.         String addition = ""
  144.         try { 
  145.             if (args.length >= 3) { 
  146.                 baseW = Integer.parseInt(args[0]); 
  147.                 baseH = Integer.parseInt(args[1]); 
  148.                 addition = args[2]; 
  149.             } else if (args.length >= 2) { 
  150.                 baseW = Integer.parseInt(args[0]); 
  151.                 baseH = Integer.parseInt(args[1]); 
  152.             } else if (args.length >= 1) { 
  153.                 addition = args[0]; 
  154.             } 
  155.         } catch (NumberFormatException e) { 
  156.  
  157.             System.err 
  158.                     .println("right input params : java -jar xxx.jar width height w,h_w,h_..._w,h;"); 
  159.             e.printStackTrace(); 
  160.             System.exit(-1); 
  161.         } 
  162.  
  163.         new GenerateValueFiles(baseW, baseH, addition).generate(); 
  164.     } 
  165.  

 

同時我提供了jar包,默認情況下,雙擊即可生成,使用說明:

 

 

下載地址見文末,內置了常用的分辨率,默認基準為480*320,當然對于特殊需求,通過命令行指定即可:

例如:基準 1280 800 ,額外支持尺寸:1152 735;4500 * 3200;

 

 

按照

Java -jar xx.jar width height width,height_width,height

上述格式即可。

結束語

到此,我們通過編寫一個工具,根據某基準尺寸,生成所有需要適配分辨率的values文件,做到了編寫布局文件時,可以參考屏幕的分辨率;在UI給出的設計圖,可以快速的按照其標識的px單位進行編寫布局。基本解決了適配的問題。歡迎大家點贊和評論,也歡迎大家去作者博客評論交流。

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

2021-01-08 09:07:19

Scrapy框架爬蟲

2012-02-24 10:48:56

語盒開源

2014-10-15 14:58:50

iPhone6iOS 8分辨率

2021-05-20 07:56:35

Bean容器Spring

2023-10-07 08:59:02

2011-05-30 08:42:56

Android

2014-08-07 15:06:45

Android設備分辨率

2022-07-04 23:24:28

sql優化監控

2023-02-16 07:30:55

圖形編輯器屏幕開發

2014-07-08 11:10:39

移動端分辨率適配

2013-05-21 14:15:23

Android游戲開發屏幕分辨率

2014-06-06 13:42:26

iOS 8QR CodeWWDC2014

2012-05-03 10:24:02

ApacheMINAJava

2017-04-10 09:17:08

神經網絡分辨率像素遞歸

2023-04-20 17:41:38

開源清華

2017-06-13 12:57:42

Windows 10Windows分辨率

2011-08-16 17:57:51

linux修改分辨率

2021-03-08 08:21:19

詞云數據可視化大數據

2013-08-13 11:09:10

android分辨率
點贊
收藏

51CTO技術棧公眾號

国产传媒视频在线| 男人操女人逼免费视频| 国产伦一区二区| 欧美日韩精品| 亚洲成色www8888| 亚洲自偷自拍熟女另类| 在线观看a视频| 男女性色大片免费观看一区二区| 久久亚洲精品毛片| 国产白嫩美女无套久久| 456亚洲精品成人影院| 成人欧美一区二区三区小说| 国产精品一区二区三区免费观看| 久久久久久久久久久影院| 日韩在线观看| 日韩av在线高清| 一起操在线视频| 大桥未久在线视频| 中文字幕日韩av资源站| 精品欧美日韩在线| 91精品国自产| 久久久久久久波多野高潮日日| 久久国内精品一国内精品| 制服丝袜第一页在线观看| 巨大黑人极品videos精品| 亚洲1区2区3区视频| 亚洲成人网上| 色资源在线观看| 国产综合久久久久影院| 国产97免费视| 日本系列第一页| 97人人精品| 日韩精品在线观看视频| 亚洲一二三四五| 电影中文字幕一区二区| 在线观看免费一区| 久久久久国产视频| 91视频免费在观看| 精品视频高潮| 日韩欧美国产电影| 精品亚洲一区二区三区四区| 国产理论在线| 亚洲一区二区高清| 日本老太婆做爰视频| porn视频在线观看| 久久综合国产精品| 国模精品一区二区三区| 亚洲av无码片一区二区三区| 精品一二三四区| 国产精品aaaa| 国产精品suv一区| 夜夜夜久久久| 97在线视频一区| 久久亚洲成人av| 欧美视频成人| 欧美日韩国产成人在线| 成人免费视频网站入口::| 97色伦图片97综合影院| 久久精彩免费视频| 四虎884aa成人精品| 久久国产影院| 日韩视频在线免费| 91香蕉一区二区三区在线观看 | 91在线观看欧美日韩| 中文字幕在线视频免费| 免费高清视频精品| 国产欧美日韩精品在线观看| 中文天堂在线视频| 麻豆成人91精品二区三区| 国产玖玖精品视频| 97在线播放免费观看| 国产呦精品一区二区三区网站| 成人精品aaaa网站| 亚洲精品福利网站| 99在线热播精品免费| 国产在线精品一区二区三区》| 姝姝窝人体www聚色窝| 99re成人在线| 日韩aⅴ视频一区二区三区| 国产九色在线| 亚洲视频中文字幕| 男人添女荫道口喷水视频| 国产欧洲在线| 在线精品视频免费播放| 视频免费1区二区三区 | 色综合色综合色综合| 久久网站免费视频| 成人1区2区| 日韩一区二区三区视频| 国产精品一级黄片| 日韩av密桃| 欧美第一黄色网| 天堂中文字幕在线观看| 青青草97国产精品免费观看无弹窗版| 国产有码在线一区二区视频| 亚洲av无码一区二区三区性色| 成人美女视频在线观看18| 欧美久久在线| 久操视频在线免费播放| 黄网动漫久久久| 尤蜜粉嫩av国产一区二区三区| 欧美精品三级在线| 亚洲欧洲国产伦综合| 91高清免费观看| 久久国产99| 成人午夜激情免费视频| 香蕉视频黄色片| 国产精品传媒视频| av日韩一区二区三区| 成人久久网站| 欧美成人vps| 人人妻人人澡人人爽| 国产精品va| 日本久久久a级免费| www.国产黄色| 中文字幕av在线一区二区三区| 成年人三级视频| 国模一区二区| 亚洲成人a级网| 欧美xxxooo| 日韩精品电影在线| 51成人做爰www免费看网站| 男人天堂亚洲二区| 亚洲一区在线观看免费观看电影高清 | 日本欧美爱爱爱| 亚洲精品成av人片天堂无码| 国产精品久久三区| 午夜肉伦伦影院| 日韩精品一区二区三区免费视频| 亚洲一品av免费观看| 久久综合加勒比| 国产综合色视频| 色就是色欧美| 黑人巨大精品欧美一区二区桃花岛| 日韩美女在线视频 | 青青草原在线亚洲| 欧美国产欧美亚洲国产日韩mv天天看完整| 樱花视频在线免费观看| av不卡一区二区三区| 免费看日b视频| 成人在线日韩| 久久精品国产视频| 国产日韩欧美视频在线观看| 国产精品网站在线| 国产又黄又猛又粗| 国产一区日韩| 日本亚洲欧洲色α| 狠狠色伊人亚洲综合网站l| 欧美日韩亚洲精品一区二区三区| 国产清纯白嫩初高中在线观看性色| 亚洲国产一成人久久精品| 国产一区私人高清影院| 在线观看免费黄色| 在线观看91视频| 精品少妇一区二区三区免费观| 国产日韩亚洲欧美精品| 国产综合动作在线观看| 波多野一区二区| 亚洲国产精品字幕| 国产成人无码一区二区三区在线| 成人性色生活片| 99在线免费视频观看| 成人爽a毛片| 97人人爽人人喊人人模波多 | 国产亚洲一区二区手机在线观看 | 久青草国产在线| 色视频欧美一区二区三区| 波多野结衣av在线观看| 久久精品导航| 亚洲精品自在在线观看| 白嫩亚洲一区二区三区| 色综合久久88| 熟妇高潮一区二区高潮| 在线观看视频一区二区欧美日韩| 国产视频不卡在线| 国产一区二区视频在线播放| 国产 欧美 日本| 精品丝袜久久| 国产精品av在线播放| 久操视频在线| 精品奇米国产一区二区三区| 97久久久久久久| 国产欧美一区二区精品久导航 | 国产成人在线看| 鲁一鲁一鲁一鲁一色| 精品视频97| 91精品入口蜜桃| 亚洲涩涩在线| 色777狠狠综合秋免鲁丝| 性猛交xxxx乱大交孕妇印度| 精品国产999| 少妇太紧太爽又黄又硬又爽小说| 国产在线不卡一卡二卡三卡四卡| 人人妻人人澡人人爽欧美一区双| 综合国产视频| 成人免费视频a| 超碰99在线| 最新的欧美黄色| 黄色片一区二区| 欧美影院一区二区| 久久久精品99| 国产精品女主播在线观看| 国产麻豆剧传媒精品国产| 久久久国产精品一区二区中文| 自拍视频一区二区三区| 偷拍亚洲精品| 亚洲a中文字幕| 成人小电影网站| 久久99热精品| av在线日韩国产精品| 亚洲电影免费观看高清完整版在线| 欧美性受xxx黑人xyx性爽| 亚洲一区在线观看网站| 登山的目的在线| 2017欧美狠狠色| 制服下的诱惑暮生| 蜜桃91丨九色丨蝌蚪91桃色| 精品三级av在线| 欧美大片大片在线播放| 欧美久久久久免费| 在线电影院国产精品| 精品久久久久一区二区| 日本成人中文字幕在线视频| 无码人妻精品一区二区蜜桃网站| 精品国产aⅴ| 国产在线一区二区三区欧美 | 91成人在线观看国产| 麻豆tv入口在线看| 亚洲香蕉在线观看| 深夜福利视频一区| 亚洲第一av网站| www.色播.com| 91精品国产91久久久久久最新毛片| 波多野结衣视频观看| 欧美日韩激情视频8区| 久久亚洲AV无码| 亚洲精品综合在线| 999精品在线视频| 欧美国产成人在线| 午夜精产品一区二区在线观看的| 91在线播放网址| 伊人久久一区二区三区| 高清在线不卡av| 在线观看视频在线观看| 精品午夜久久福利影院| 自拍偷拍21p| 中文字幕亚洲乱码熟女1区2区| 国产精品一区专区| 国产又黄又猛的视频| 美女性感视频久久| www.com操| 美女一区二区视频| 欧美日韩中文不卡| 久久机这里只有精品| 日本 片 成人 在线| 久久精品国产免费| 亚洲午夜精品一区| 国产精选一区二区三区| 亚洲一区二区三区三州| 懂色av中文一区二区三区 | 欧美无毛视频| 欧洲精品在线视频| 国产精品午夜一区二区| 色综合天天综合网天天看片| 国产熟妇一区二区三区四区| 色屁屁一区二区| 国产美女www爽爽爽| 欧美精品vⅰdeose4hd| 国产视频在线观看视频| 日韩欧美在线影院| 免费看黄色一级视频| 日韩av在线免费| 成人在线高清视频| www.欧美免费| 日本高清在线观看| 91精品国产高清久久久久久91| 波多野结衣亚洲| 国产精品丝袜视频| 亚洲**毛片| 国产一区二区在线观看免费播放| 亚洲影院天堂中文av色| 亚洲欧美日产图| 欧美黄色免费| www一区二区www免费| 日本vs亚洲vs韩国一区三区| 久久综合在线观看| www.爱久久.com| ass极品国模人体欣赏| 亚洲欧美精品午睡沙发| 亚洲天堂日韩av| 欧美日韩精品三区| 成人久久久精品国产乱码一区二区| 亚洲精品国偷自产在线99热| 最新国产在线观看| 久久久久国产一区二区三区| 亚洲一区二区三区四区| 2020国产精品久久精品不卡| 天堂网av成人| 中文字幕99| 国产欧美日本| 午夜av中文字幕| 91蜜桃婷婷狠狠久久综合9色| 四虎影视一区二区| 黄色一区二区在线| 99热这里是精品| 亚洲人午夜精品免费| 日本大片在线播放| 国产精品视频一区二区三区四 | 亚洲精选在线| 不用播放器的免费av| 91毛片在线观看| 日本黄色小说视频| 欧美视频中文字幕| 日韩一区二区三区不卡| 久久久国产精品亚洲一区| 亚洲欧美韩国| 国产精品一区二区av| 欧美xxav| 韩国一区二区av| 成人动漫一区二区在线| 999精品视频在线观看播放| 日本韩国一区二区三区视频| 人人妻人人玩人人澡人人爽| 久久九九精品99国产精品| 希岛爱理一区二区三区av高清| 国产成人精品一区二区三区福利| 色婷婷一区二区三区| 黄色免费网址大全| 2021中文字幕一区亚洲| 久久免费精彩视频| 欧美一区二区三区婷婷月色| 在线视频三区| 国产91在线播放九色快色| 日韩中出av| 欧美成人精品免费| 国产精品一区二区久激情瑜伽| 欧美成人久久久免费播放| 在线视频欧美区| 日本大臀精品| 18一19gay欧美视频网站| 国产精品调教视频| 精品视频在线观看一区二区| 国产精品一区在线| 九九精品视频免费| 欧美乱妇15p| 九七久久人人| 91九色国产社区在线观看| 91日韩欧美| 国产欧美一区二| 中文字幕一区二区三区在线播放| 伊人网免费视频| 中文字幕久久久| 日韩国产大片| 最新欧美日韩亚洲| 黄一区二区三区| 黄色一级片中国| 日韩美女视频在线| 爱看av在线入口| 国产自产精品| 蜜桃av综合| 欧美老女人性生活视频| 欧美日韩国产区一| www在线免费观看视频| 147欧美人体大胆444| 国产精品www994| 国产三级国产精品| 日本韩国一区二区| 在线看免费av| 99在线国产| 国产日韩欧美三区| 国产调教在线观看| 欧美精品电影在线播放| av片在线观看| 国产精品免费一区二区| 免费久久99精品国产自在现线| 实拍女处破www免费看| 欧美日韩中文字幕一区| 18在线观看的| 久久99精品久久久久子伦| 天堂成人国产精品一区| 亚洲精品卡一卡二| 亚洲国产精品va在线看黑人| 欧美专区福利免费| 在线天堂一区av电影| 国产福利一区在线观看| 日日噜噜噜噜人人爽亚洲精品| 一区二区欧美久久| 麻豆精品国产| 日本精品一区二区三区四区| 国产精品黄色在线观看| www.黄色国产| 欧美专区在线视频| 91精品久久久久久久久久不卡| 美女伦理水蜜桃4| 欧美中文字幕亚洲一区二区va在线| 国内外激情在线| 久久久久久久免费| 国模一区二区三区白浆| 波多野结衣国产| 久久精品在线视频|