精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

欧美激情网址| 日本在线免费| 国产欧美综合一区二区三区| 日韩欧美二区三区| 男人添女人下部视频免费| 国产黄色片免费| 9色精品在线| 少妇激情综合网| 久久久高清视频| 日韩福利一区| 一区二区激情小说| 欧美日韩精品免费看 | 一本久道久久综合中文字幕| 亚洲春色在线| 特级丰满少妇一级aaaa爱毛片| 日韩福利电影在线观看| 欧美精品video| 欧美午夜激情影院| 91久久精品无嫩草影院 | 久久99久久99精品免观看粉嫩| 黄色免费视频网站| 四虎影视精品永久在线观看| 欧美特黄级在线| 国产91porn| 波多野结衣在线影院| 成人av免费观看| 成人精品网站在线观看| 国产午夜性春猛交ⅹxxx| 久久精品免费一区二区三区| 国产丝袜一区二区三区| 亚洲成年人av| 国产麻豆精品| 欧美日韩视频一区二区| 欧美亚洲另类色图| 爱福利在线视频| 亚洲欧美综合另类在线卡通| 色999五月色| 三级在线电影| 97精品视频在线观看自产线路二| 成人久久久久久久| 中文字幕观看在线| 久久精品人人| 性视频1819p久久| 免费在线一级片| 欧美在线免费| 另类色图亚洲色图| 大地资源高清在线视频观看| 精品欧美激情在线观看| 亚洲色图五月天| 国产 中文 字幕 日韩 在线| 九色丨蝌蚪丨成人| 亚洲国产高潮在线观看| 91超薄肉色丝袜交足高跟凉鞋| 玖玖精品一区| 日韩亚洲欧美成人一区| 亚洲第一天堂久久| 国产日本亚洲| 日韩欧美www| 高清中文字幕mv的电影| 中文字幕一区二区三区中文字幕 | 亚洲国产va精品久久久不卡综合| 免费看污污视频| 在线欧美三级| 亚洲第一精品在线| 青青草视频在线免费播放| 爱啪视频在线观看视频免费| 亚洲不卡一区二区三区| 国产v片免费观看| 在线女人免费视频| 91精品福利在线| 一区二区三区网址| 国产精品毛片无码| 精品免费一区二区三区| 污污内射在线观看一区二区少妇 | 国产成人久久精品77777最新版本 国产成人鲁色资源国产91色综 | 亚洲国产中文字幕久久网| 国产精品亚洲一区二区无码| 久久动漫网址| 国产一区二区三区毛片| 亚洲一二三四五六区| 亚洲综合小说| 久久久久久美女| av黄色在线播放| 麻豆精品一区二区av白丝在线| 成人在线中文字幕| 特黄aaaaaaaaa真人毛片| 国产欧美一区二区精品忘忧草| 亚洲午夜激情| 国产第一页在线| 日本韩国欧美在线| 捷克做爰xxxⅹ性视频| 精品中国亚洲| 色爱av美腿丝袜综合粉嫩av| 国产亚洲小视频| 久久福利精品| 亚洲直播在线一区| 亚洲日本中文字幕在线| 久久美女艺术照精彩视频福利播放| 日韩精品一线二线三线| 少女频道在线观看免费播放电视剧| 偷拍日韩校园综合在线| 99re精彩视频| 日本妇女一区| 伦理中文字幕亚洲| 69亚洲精品久久久蜜桃小说| 国产一区视频在线看| 久久99精品久久久久久久青青日本| av电影在线观看网址| 亚洲丰满少妇videoshd| 亚洲欧美国产日韩综合| 日韩影视高清在线观看| 久久精品国产2020观看福利| 天堂а√在线中文在线新版 | 成人av免费看| 国产免费av高清在线| 亚洲一区精品在线| 中文字幕第88页| 婷婷综合一区| 欧美激情在线观看| 91资源在线视频| xfplay精品久久| 精品人妻大屁股白浆无码| 美女色狠狠久久| 精品视频久久久久久| 久操免费在线视频| 黑人精品欧美一区二区蜜桃 | 色哟哟视频在线| 99欧美视频| 国产精品福利网站| 日韩毛片在线一区二区毛片| 亚洲午夜精品久久久久久久久| 亚洲午夜激情影院| 奇米影视亚洲| 国产成人亚洲精品| 人人妻人人澡人人爽久久av | 疯狂欧洲av久久成人av电影 | 999视频在线免费观看| 99免在线观看免费视频高清| 欧美午夜影院在线视频| 欧亚乱熟女一区二区在线| 中文无码久久精品| 成人性生交大片免费看视频直播| 成人在线免费电影| 欧美性欧美巨大黑白大战| 成人h动漫精品一区| 99亚洲一区二区| 国产精品.com| 成人高潮aa毛片免费| 精品人伦一区二区色婷婷| 欧美精品色哟哟| 成人深夜视频在线观看| 中国丰满熟妇xxxx性| 91午夜精品| 久久久久久久久久久成人| 亚洲国产精彩视频| 亚洲国产sm捆绑调教视频| 国产黑丝一区二区| 亚洲免费播放| 欧美男人的天堂| 成人开心激情| 最近日韩中文字幕中文| 一级淫片免费看| 一区二区在线观看免费视频播放| 亚洲区 欧美区| 亚洲人成在线影院| 久久婷婷人人澡人人喊人人爽| 色吧亚洲日本| 尤物99国产成人精品视频| 中文字幕一区二区三区免费看| 国产精品三级在线观看| 亚洲三级在线观看视频| 欧美日韩免费观看一区=区三区| 国产二区不卡| 美女福利一区二区| 色午夜这里只有精品| av一区二区三| 狠狠躁夜夜躁人人躁婷婷91| 精品无码人妻一区二区免费蜜桃 | 黄色av电影网站| 国产视频亚洲| 五码日韩精品一区二区三区视频| 精品亚洲二区| 97在线视频一区| www.成人.com| 欧美一区二区三区人| 国产a∨精品一区二区三区仙踪林| 久久久久久免费| 中文字幕色网站| 99re国产精品| 一区二区三区国| 精品国产影院| 国产精品国模在线| 日韩av激情| 亚洲天堂av综合网| 精品久久国产视频| 色综合激情久久| 欧美成人精品激情在线视频| 久久久综合激的五月天| 超碰超碰在线观看| 中日韩视频在线观看| 亚洲欧美日韩精品久久久| 一区二区三区视频播放| 国产精品成人aaaaa网站| 青青在线视频| 中文字幕亚洲无线码在线一区| 亚洲精品一区二区三区不卡| 在线亚洲人成电影网站色www| 免费在线观看av网址| 欧美韩国一区二区| av网站有哪些| 国产一区二区在线影院| 麻豆av免费在线| 在线观看视频免费一区二区三区| 日产精品高清视频免费| 国产精品久久久久av蜜臀| 国产精品福利在线观看| 九色porny丨入口在线| 超薄丝袜一区二区| 国产在线一在线二| 亚洲精品国产suv| 性一交一乱一色一视频麻豆| 欧美视频一二三区| 无码日韩精品一区二区| 天天综合色天天综合| 精品99在线观看| 国产精品成人一区二区艾草 | 制服丝袜av在线| 久久成人综合网| 狠狠热免费视频| 亚洲一区一卡| 僵尸世界大战2 在线播放| 在线国产一区二区| 在线免费观看成人网| 精品视频亚洲| 欧美精品在线一区| 亚洲最大在线| 久久99精品久久久久久久青青日本| 97超碰成人| 成人看片在线| 综合视频一区| 97av自拍| 深夜激情久久| 波多野结衣一区二区三区在线观看| 亚洲一区有码| 成人午夜一级二级三级| 国产激情一区| 18成人在线| 日本精品一区二区三区在线观看视频| 91精品视频在线免费观看| 欧美一级做一级爱a做片性| 成人国产在线视频| www 久久久| 97碰碰视频| 98视频精品全部国产| 国产一区二区黄色| 林ゆな中文字幕一区二区| 九色综合日本| 成人写真视频| 天天成人综合网| 影视亚洲一区二区三区| 777av视频| 天堂影院一区二区| 高清av免费看| 国产成人免费视频| 亚洲第九十七页| 国产欧美日韩视频一区二区| 99久久久无码国产精品不卡| 亚洲欧美一区二区三区久本道91| 欧美日韩成人免费观看| 五月天激情综合| www.亚洲激情| 91精品一区二区三区久久久久久| av在线资源观看| 亚洲成人av片| 国产色a在线| 久久亚洲精品一区二区| 久草免费在线色站| 日韩av免费一区| 亚洲精品第一| 国产区一区二区| 九九综合九九| 免费观看国产视频在线| 999在线观看精品免费不卡网站| 日日摸天天爽天天爽视频| 精品一区二区三区在线观看| 日韩大尺度视频| 久久久久久一二三区| 中文字幕在线观看2018| 亚洲h在线观看| 亚洲视屏在线观看| 精品国产一区二区三区四区四| 久热av在线| 色婷婷在线播放| 91精品国产免费久久久久久| a屁视频一区二区三区四区| 91久久偷偷做嫩草影院| 久本草在线中文字幕亚洲| 中文字幕在线中文字幕日亚韩一区| 激情综合自拍| 国产精品自拍视频在线| 91丨porny丨首页| 国产真实乱在线更新| 精品福利樱桃av导航| 国产免费久久久| 亚洲精品自产拍| 色呦呦网站在线观看| 国产精品丝袜白浆摸在线| 欧洲亚洲成人| 日本a在线天堂| 麻豆国产一区二区| 国产成人无码一区二区在线观看| 亚洲欧美日韩在线播放| 区一区二在线观看| 亚洲第一天堂无码专区| 免费黄色在线观看| 国产精品69久久久久| 韩国女主播一区二区三区| 麻豆md0077饥渴少妇| 日韩avvvv在线播放| 一级特黄a大片免费| 亚洲一二三专区| 国内精品久久久久久久久久| 综合网日日天干夜夜久久| www.成人爱| 精品乱色一区二区中文字幕| 欧美一区二区三区久久精品茉莉花 | 国产爆初菊在线观看免费视频网站| 欧美黄色片免费观看| 99er精品视频| 欧美日韩精品综合| 性欧美videos另类喷潮| 亚洲国产果冻传媒av在线观看| 亚洲精品自拍动漫在线| 91在线视频国产| www.精品av.com| 婷婷精品久久久久久久久久不卡| 日韩一区免费观看| 免播放器亚洲| 国产中文字幕一区二区| 欧美日韩国产精品专区| 好吊色一区二区三区| 久久91精品国产91久久跳| 久久三级中文| 欧美做受777cos| 国产成人亚洲综合a∨婷婷图片 | 欧美激情欧美| mm131国产精品| 国产精品国产三级国产a| 艳妇乳肉豪妇荡乳av| 久久激情视频免费观看| 美女久久久久久| 在线国产伦理一区| 国产一区二区福利视频| 日本妇女毛茸茸| 精品国产一区a| 91桃色在线观看| 久久综合毛片| 首页国产欧美久久| 中文天堂资源在线| 亚洲制服丝袜av| 国产精品久久久午夜夜伦鲁鲁 | 国模精品视频| 女同一区二区| 午夜一区不卡| 亚洲一区二区三区蜜桃| 欧美综合天天夜夜久久| 国产在线网站| 国产日韩欧美另类| 日韩精品电影| 四虎成人在线播放| 亚洲国产综合在线| 三级国产在线观看| 国产精品精品久久久久久| 天天做天天爱天天综合网| 97超碰人人看| 午夜电影一区二区三区| 免费在线观看一级毛片| 成人国产在线视频| 亚洲国产高清一区| 欧美黄色激情视频| 欧美一区二区免费视频| 成入视频在线观看| 亚洲v国产v| 丁香六月综合激情| 亚洲成熟少妇视频在线观看| 久久视频这里只有精品| 久久aimee| 拔插拔插华人永久免费| 国产精品久久看| 性色av蜜臀av| 国产成人精品最新| 欧美国产美女| 国产ts丝袜人妖系列视频| 欧美日韩一区二区三区高清| 国精一区二区三区| 亚洲a∨一区二区三区| 91在线观看污| 国产男男gay体育生白袜| 日本久久91av| 国产亚洲欧美精品久久久久久|