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

MetroGridHelper:WP7設計師與開發人員的得力助手

譯文
移動開發
如果最終外觀設計方案能夠與Windows Phone上現有的性能計數器相似,那么肯定會大受歡迎——在調試時,我們能夠將這套網格重疊覆蓋在整個應用程序框架上,使其成為獨立而完整的全局顯示方案。

作者簡介:Jeff Wilcox,微軟高級軟件開發工程師,不久前,調往微軟Windows Azure組,負責微軟云技術的開源項目。Jeff Wilcox曾負責開發了Windows Phone平臺的Foursqaure客戶端,并參與了無數Silverlight工具包、Windows Phone 7.0、7.1開發包,Windows Phone用戶界面控制、幫助,以及許多其他重要項目。

[[79339]] 
Jeff Wilcox

【51CTO譯文】作為沉浸于開發行業多年的老手,大家一定對這些話題并不陌生:整理頁面邊距、對齊圖像內容以及讓自己的應用程序更美觀。隨著軟件消費者中“外貌協會”成員的比重不斷上升,用戶界面不夠搶眼的應用幾乎已經無法在市場上占得一席之地。

不久前,我有幸參加了Windows Phone設計團隊舉辦的“美觀開發空間”活動。我要由衷地贊嘆,這是一次真正的創意空間交流活動,到處是有趣的參與者、舒緩的音樂以及為市場創造出更好、更漂亮的應用程序的熱烈渴求。

在活動中我一直坐在兩位用戶體驗設計師Corrina與Arturo身邊,與他們討論設計工作中的原則性取向;很偶然地,我們的話題轉移到一副簡潔而相當美觀的網格圖上,這也正是二位在Windows Phone平臺上開發的主要焦點。圖像由多個紅色正方形構成,每個方形為25x25像素,兩個方形之間相隔12像素,也就是說每個獨立單元都擁有寬高為24像素的反襯背景。(還是那句話,Metro風格要求邊框長度始終為12的整數)

設計將使用典型的Photoshop層來容納這些方形,或者是在應用程序頁面之上插入XAML借以完成圖形對齊、網格設計及位置調整等等。

我的想法是:如果最終外觀設計方案能夠與Windows Phone上現有的性能計數器相似,那么肯定會大受歡迎——在調試時,我們能夠將這套網格重疊覆蓋在整個應用程序框架上,使其成為獨立而完整的全局顯示方案。就在活動過程當中,我即興用代碼將自己的想法表達了出來,下面請大家分享我的成果。

要使用這款計數器,我們只需打開App.xaml.cs文件(這里囊括了其它多款性能計數器),并將其添加進來。如果大家只是打算簡單設計一下,那么我建議各位直接將其啟用,這樣一來我們就能夠讓它作用于實機及模擬器中的應用程序。之所以要把它與模擬器關聯起來,是因為我們能夠將最終顯示效果通過截圖與朋友及家人分享,并聆聽他們在圖像位置方面提出的意見。

  1. // Show graphics profiling information while debugging.  
  2. if (System.Diagnostics.Debugger.IsAttached)  
  3. {  
  4.     // Display the current frame rate counters.  
  5.     Application.Current.Host.Settings.EnableFrameRateCounter = true;  
  6.    
  7.     // Display the metro grid helper.  
  8.     MetroGridHelper.IsVisible = true

以下是這段簡單的代碼在與小型應用程序協作時顯示出的效果:

效果

在這個例子中,我遇到了Windows Phone設計中的經典“bug”:文本信息區塊之一在插入過程中未能正確顯示應有的Metro風格。也就是說,該區塊的左側邊距為“0”,而不是Metro要求的12像素,這使得對應文字內容比其它字體更靠左。通過上圖中正方形的對比,相信大家能更清晰地理解我遇到的問題,字體錯位現象十分明顯。

如果大家不喜歡默認的紅色以及~0.15的不透明度,我還為不透明度及顏色添加了簡單的靜態屬性設置選項,希望能讓各位獲得自己理想中的方形單元效果。在運行過程中,可見屬性不會顯示出來,但請大家注意,只要網格本身仍然存在于可視化元素列表當中,就會占用對應的性能資源(因此請務必在應用程序的發布版本中把網格去掉,否則會造成毫無意義的資源浪費)。

源代碼

我已經在NuGet上發布過源文件——這應該是大家在自己的項目中使用這款小成品的最佳方式。如果今后我做出任何修正或添加某些功能,各位也將會在NuGet網站上及時找到最新版本。

◆確保自己已經安裝了NuGet(http://www.nuget.org/)

◆使用控制臺或軟件包管理器安裝該軟件包,我把它命名為MetroGridHelper

PM> Install-Package MetroGridHelper

當然,大家也可以將這部分源代碼在項目中整理成一個全新的文件,MetroGridHelper.cs:

  1. // (c) Copyright Microsoft Corporation.  
  2. // This source is subject to the Microsoft Public License (Ms-PL).  
  3. // Please see http://go.microsoft.com/fwlink/?LinkID=131993 for details.  
  4. // All other rights reserved.  
  5.  
  6. using System.Collections.Generic;  
  7. using System.Diagnostics;  
  8. using System.Windows.Controls;  
  9. using System.Windows.Media;  
  10. using System.Windows.Shapes;  
  11.  
  12. namespace System.Windows  
  13. {  
  14.     /// <summary>  
  15.     /// A utility class that overlays a designer-friendly grid on top of the  
  16.     /// application frame, for use similar to the performance counters in  
  17.     /// App.xaml.cs. The color and opacity are configurable. The grid contains  
  18.     /// a number of squares that are 24x24, offset with 12px gutters, and all  
  19.     /// 24px away from the edge of the device.  
  20.     /// </summary>  
  21.     public static class MetroGridHelper  
  22.     {  
  23.         private static bool _visible;  
  24.         private static double _opacity = 0.15;  
  25.         private static Color _color = Colors.Red;  
  26.         private static List<Rectangle> _squares;  
  27.         private static Grid _grid;  
  28.    
  29.         /// <summary>  
  30.         /// Gets or sets a value indicating whether the designer grid is  
  31.         /// visible on top of the application's frame.  
  32.         /// </summary>  
  33.         public static bool IsVisible  
  34.         {  
  35.             get 
  36.             {  
  37.                 return _visible;  
  38.             }  
  39.             set 
  40.             {  
  41.                 _visible = value;  
  42.                 UpdateGrid();  
  43.             }  
  44.         }  
  45.    
  46.         /// <summary>  
  47.         /// Gets or sets the color to use for the grid's squares.  
  48.         /// </summary>  
  49.         public static Color Color  
  50.         {  
  51.             get { return _color; }  
  52.             set 
  53.             {  
  54.                 _color = value;  
  55.                 UpdateGrid();  
  56.             }  
  57.         }  
  58.    
  59.         /// <summary>  
  60.         /// Gets or sets a value indicating the opacity for the grid's squares.  
  61.         /// </summary>  
  62.         public static double Opacity  
  63.         {  
  64.             get { return _opacity; }  
  65.             set 
  66.             {  
  67.                 _opacity = value;  
  68.                 UpdateGrid();  
  69.             }  
  70.         }  
  71.    
  72.         /// <summary>  
  73.         /// Updates the grid (if it already has been created) or initializes it  
  74.         /// otherwise.  
  75.         /// </summary>  
  76.         private static void UpdateGrid()  
  77.         {  
  78.             if (_squares != null)  
  79.             {  
  80.                 var brush = new SolidColorBrush(_color);  
  81.                 foreach (var square in _squares)  
  82.                 {  
  83.                     square.Fill = brush;  
  84.                 }  
  85.                 if (_grid != null)  
  86.                 {  
  87.                     _grid.Visibility = _visible ? Visibility.Visible : Visibility.Collapsed;  
  88.                     _grid.Opacity = _opacity;  
  89.                 }  
  90.             }  
  91.             else 
  92.             {  
  93.                 BuildGrid();  
  94.             }  
  95.         }  
  96.    
  97.         /// <summary>  
  98.         /// Builds the grid.  
  99.         /// </summary>  
  100.         private static void BuildGrid()  
  101.         {  
  102.             _squares = new List<Rectangle>();  
  103.    
  104.             var frame = Application.Current.RootVisual as Frame;  
  105.             if (frame == null || VisualTreeHelper.GetChildrenCount(frame) == 0)  
  106.             {  
  107.                 Deployment.Current.Dispatcher.BeginInvoke(BuildGrid);  
  108.                 return;  
  109.             }  
  110.    
  111.             var child = VisualTreeHelper.GetChild(frame, 0);  
  112.             var childAsBorder = child as Border;  
  113.             var childAsGrid = child as Grid;  
  114.             if (childAsBorder != null)  
  115.             {  
  116.                 // Not a pretty way to control the root visual, but I did not  
  117.                 // want to implement using a popup.  
  118.                 var content = childAsBorder.Child;  
  119.                 if (content == null)  
  120.                 {  
  121.                     Deployment.Current.Dispatcher.BeginInvoke(BuildGrid);  
  122.                     return;  
  123.                 }  
  124.                 childAsBorder.Child = null;  
  125.                 Deployment.Current.Dispatcher.BeginInvoke(() =>  
  126.                 {  
  127.                     Grid newGrid = new Grid();  
  128.                     childAsBorder.Child = newGrid;  
  129.                     newGrid.Children.Add(content);  
  130.                     PrepareGrid(frame, newGrid);  
  131.                 });  
  132.             }  
  133.             else if (childAsGrid != null)  
  134.             {  
  135.                 PrepareGrid(frame, childAsGrid);  
  136.             }  
  137.             else 
  138.             {  
  139.                 Debug.WriteLine("Dear developer:");  
  140.                 Debug.WriteLine("Unfortunately the design overlay feature requires that the root frame visual");  
  141.                 Debug.WriteLine("be a Border or a Grid. So the overlay grid just isn't going to happen.");  
  142.                 return;  
  143.             }  
  144.         }  
  145.    
  146.         /// <summary>  
  147.         /// Does the actual work of preparing the grid once the parent frame is  
  148.         /// in the visual tree and we have a Grid instance to work with for  
  149.         /// placing the chilren.  
  150.         /// </summary>  
  151.         /// <param name="frame">The phone application frame.</param>  
  152.         /// <param name="parent">The parent grid to insert the sub-grid into.</param>  
  153.         private static void PrepareGrid(Frame frame, Grid parent)  
  154.         {  
  155.             var brush = new SolidColorBrush(_color);  
  156.    
  157.             _grid = new Grid();  
  158.             _grid.IsHitTestVisible = false;  
  159.    
  160.             // To support both orientations, unfortunately more visuals need to  
  161.             // be used. An alternate implementation would be to react to the  
  162.             // orientation change event and re-draw/remove squares.  
  163.             double width = frame.ActualWidth;  
  164.             double height = frame.ActualHeight;  
  165.             double max = Math.Max(width, height);  
  166.    
  167.             for (int x = 24; x < /*width*/ max; x += 37)  
  168.             {  
  169.                 for (int y = 24; y < /*height*/ max; y += 37)  
  170.                 {  
  171.                     var rect = new Rectangle  
  172.                     {  
  173.                         Width = 25,  
  174.                         Height = 25,  
  175.                         VerticalAlignment = System.Windows.VerticalAlignment.Top,  
  176.                         HorizontalAlignment = System.Windows.HorizontalAlignment.Left,  
  177.                         Margin = new Thickness(x, y, 0, 0),  
  178.                         IsHitTestVisible = false,  
  179.                         Fill = brush,  
  180.                     };  
  181.                     _grid.Children.Add(rect);  
  182.                     _squares.Add(rect);  
  183.                 }  
  184.             }  
  185.    
  186.             _grid.Visibility = _visible ? Visibility.Visible : Visibility.Collapsed;  
  187.             _grid.Opacity = _opacity;  
  188.    
  189.             // For performance reasons a single surface should ideally be used  
  190.             // for the grid.  
  191.             _grid.CacheMode = new BitmapCache();  
  192.    
  193.             // Places the grid into the visual tree. It is never removed once  
  194.             // being added.  
  195.             parent.Children.Add(_grid);  
  196.         }  
  197.     }  

 

原文鏈接http://www.jeff.wilcox.name/2011/10/metrogridhelper/    核子可樂 譯

責任編輯:王曉東 來源: 51CTO.com
相關推薦

2019-09-01 23:48:59

開發代碼編程

2013-03-26 13:45:34

開發人員設計師創業

2010-08-16 09:21:35

Windows Pho

2024-12-20 08:10:00

2011-04-30 16:56:45

Windows PhoiOS

2024-02-06 09:53:45

Pythonget()函數Dictionary

2025-08-04 07:36:09

Apache開源監控

2024-09-27 17:06:13

2015-07-28 16:38:56

App移動開發

2023-06-01 08:17:37

UX開發

2016-01-25 09:32:37

容器網絡SDN

2010-08-09 16:09:25

2012-05-30 15:15:42

ibmdw

2023-03-15 07:12:53

企業開發人員提供商

2009-11-23 20:07:51

ibmdw開發

2021-02-19 09:33:01

kubernetesJAVA服務

2009-12-11 14:50:14

Visual Basi

2016-03-09 12:11:33

Web開發人員簡單步驟

2021-04-15 09:42:21

程序開發軟件開發
點贊
收藏

51CTO技術棧公眾號

欧美精品一区二区久久| 亚洲婷婷噜噜| 久色婷婷小香蕉久久| 久久天天躁夜夜躁狠狠躁2022| 日韩在线一区视频| 国内老司机av在线| 国产色婷婷亚洲99精品小说| 成人午夜小视频| 免费在线不卡视频| 久久精品一区二区不卡| 日韩一级免费观看| 成人在线观看a| 欧美性受ⅹ╳╳╳黑人a性爽| 91在线云播放| 91久久偷偷做嫩草影院| 无码人妻久久一区二区三区不卡| 亚洲成人精品| 一本色道久久88综合亚洲精品ⅰ | 免播放器亚洲| 欧美精品中文字幕一区| 亚洲综合欧美综合| 国产精品午夜av| 欧美精品 国产精品| 九九九九免费视频| 欧美人与动牲性行为| 国产精品美女久久久久久久网站| 国内外成人免费视频| a在线观看免费| 青青国产91久久久久久| 91成人天堂久久成人| 午夜69成人做爰视频| 成人高清av| 亚洲摸下面视频| 久久久午夜精品福利内容| 久久久久久亚洲精品美女| 欧美色手机在线观看| 亚洲乱码中文字幕久久孕妇黑人| 天堂av在线电影| 亚洲欧美偷拍另类a∨色屁股| 日韩成人av电影在线| 涩爱av在线播放一区二区| 国产高清久久久| 91午夜在线播放| 国产精品久久免费| 久久99精品久久久久婷婷| 国产99在线|中文| 中文字幕精品三级久久久| 在线欧美亚洲| 97精品一区二区三区| 久久久久久久久久久久久久久久久 | 99re国产在线播放| 国产理论片在线观看| 老司机一区二区| 国产欧美在线视频| 国产一区二区在线视频观看| 久久国产精品免费| 国产又爽又黄的激情精品视频| 无码一区二区三区在线观看| 日韩在线一区二区三区| 国产精品久久久久秋霞鲁丝 | 欧美老女人第四色| 一道本视频在线观看| 成人黄色毛片| 91.com在线观看| 亚洲一级片av| 亚洲小说春色综合另类电影| 日韩精品中午字幕| 黄色免费视频网站| 欧美男gay| 色婷婷**av毛片一区| 欧美日韩黄色网| 亚洲免费成人| 国产成人精品久久二区二区91| 免费一级a毛片| 狠狠色丁香久久婷婷综合_中| 成人综合网网址| 韩国av永久免费| 91色乱码一区二区三区| 日本高清不卡一区二区三| 视频三区在线| 亚洲国产aⅴ成人精品无吗| 人人妻人人添人人爽欧美一区| 成人动漫一区| 欧美喷潮久久久xxxxx| 乳色吐息在线观看| 亚洲小说图片视频| 久久久精品影院| 日本在线观看中文字幕| 日韩精品乱码av一区二区| 成人天堂噜噜噜| 天天操天天干天天操| 欧美极品xxx| 日本精品福利视频| 成人小电影网站| 69堂成人精品免费视频| 免费日本黄色网址| 国产精品99一区二区三区| 国内精品一区二区三区| 国产成人精品一区二区色戒| 国产成人av电影在线观看| 欧美日韩成人一区二区三区 | 老牛影视av牛牛影视av| 久久精品一区四区| 日韩成人手机在线| av成人在线观看| 日韩精品黄色网| 国产va在线播放| 奇米精品一区二区三区四区| 国产精品久久九九| 欧美jizzhd欧美| 日韩欧美国产骚| 99免费观看视频| 日韩电影免费在线观看| 97婷婷涩涩精品一区| 国产精品国产一区二区三区四区 | 在线日韩国产网站| 久久久成人网| 国产日韩精品久久| 影音先锋在线播放| 欧美精品久久天天躁| 爱爱免费小视频| 亚洲精品乱码| 国产精品jizz视频| 成人ww免费完整版在线观看| 色婷婷精品大在线视频| yy6080午夜| 激情久久一区| 91黄在线观看| 国产在线1区| 欧美日韩一二区| av电影网站在线观看| 亚洲中字黄色| 精品一区久久久| 国产在线美女| 亚洲国产日韩精品在线| 18精品爽视频在线观看| 国产精品一区二区三区乱码| 做爰高潮hd色即是空| 影音成人av| 视频直播国产精品| 伊人久久成人网| 国产女人18水真多18精品一级做| 日韩av片在线看| 校花撩起jk露出白色内裤国产精品| 久久久久久久激情视频| 成人久久久精品国产乱码一区二区| 亚洲免费观看高清完整版在线观看 | 久草网站在线观看| 国产成人综合亚洲网站| 国产精品三级一区二区| 亚洲三级av| 久久久久久尹人网香蕉| 人人妻人人玩人人澡人人爽| 天天综合天天综合色| 青青草成人免费视频| 校园春色综合网| 日韩欧美亚洲日产国产| 欧美在线一级| 欧美成人在线免费| 国产 日韩 欧美 精品| 午夜视频一区二区| 国产精品jizz| 美女国产一区二区| 水蜜桃在线免费观看| 国产成人精品亚洲线观看| 国模吧一区二区三区| 日韩精品系列| 欧美日韩综合不卡| 精品国产欧美日韩不卡在线观看| 国产精品1区二区.| 无码播放一区二区三区| 激情婷婷综合| 91精品美女在线| 天堂av资源在线观看| 精品视频—区二区三区免费| 久久久久久亚洲av无码专区| 亚洲欧洲成人精品av97| 欧美午夜精品一区二区| 午夜在线视频观看日韩17c| 亚洲精品自在在线观看| 日本成人精品| 国产成人jvid在线播放| 自拍视频在线播放| 亚洲精品一区二区三区蜜桃下载 | 4438x亚洲最大成人网| 国产中文字幕免费| 久久精品视频一区二区| 另类小说第一页| 欧美午夜在线视频| 日韩精品福利视频| 中文字幕久久精品一区二区| 2019av中文字幕| 亚洲视频tv| 亚洲精品720p| 国产精品无码免费播放| 欧美日韩另类在线| 少妇被躁爽到高潮无码文| 91丨porny丨蝌蚪视频| 国产成人在线综合| 丝袜美腿一区二区三区| 2019日韩中文字幕mv| 日韩精品午夜| 麻豆av一区二区三区| 久久爱www.| 国产精品美女午夜av| www.九色在线| 欧美刺激性大交免费视频| 男人的天堂在线视频| 精品日韩一区二区三区| 一级黄色片在线播放| 一本久久a久久免费精品不卡| 日本a级片视频| 国产精品天干天干在观线| 懂色av粉嫩av蜜乳av| 国产黑丝在线一区二区三区| 高清av免费看| 日本成人中文字幕在线视频| 日本网站免费在线观看| 午夜久久影院| 中文字幕一区二区三区四区五区人 | 九色porny丨首页入口在线| 久久九九全国免费精品观看| 国产人成在线观看| 亚洲精品一区在线观看香蕉 | 伊人男人综合视频网| 午夜黄色小视频| 欧美精品一区视频| 亚洲免费视频网| 欧美一区二区三区日韩视频| 中文字幕一区二区人妻| 在线免费av一区| 亚洲国产精品无码久久久| 欧美日韩国产精品一区二区三区四区 | 黄色在线观看av| 91在线视频官网| 久久久久国产精品无码免费看| 国产福利精品导航| 中文字幕亚洲日本| 国产精品综合网| 亚洲一区二区三区三州| 狠狠色丁香九九婷婷综合五月| 密臀av一区二区三区| 日本人妖一区二区| 国产三级三级看三级| 奇米精品一区二区三区在线观看 | 一级做a爰片久久毛片美女图片| 青青草超碰在线| 亚洲片av在线| av网在线观看| www.99久久热国产日韩欧美.com| 91社区在线| 久久视频这里只有精品| av网站大全在线| 欧美丰满老妇厨房牲生活| 超级碰碰不卡在线视频| 国内偷自视频区视频综合| 欧美男男激情videos| 国产精品 欧美在线| av成人免费| 亚洲最大成人在线| 精品视频高潮| 蜜桃传媒视频第一区入口在线看| 亚洲免费成人av在线| 偷拍视频一区二区| 国产精品福利在线观看播放| 欧美 国产 精品| 亚洲美女啪啪| 嫩草影院国产精品| 国产福利一区二区三区视频在线| 成年人的黄色片| 中文字幕乱码一区二区免费| 天海翼在线视频| 亚洲国产裸拍裸体视频在线观看乱了| 欧美三级一区二区三区| 欧美自拍丝袜亚洲| 国产aⅴ一区二区三区| 亚洲国产欧美在线成人app| 阿v免费在线观看| 欧美美女18p| 欧美黑人疯狂性受xxxxx野外| 国产日韩精品在线播放| julia中文字幕一区二区99在线| 蜜桃传媒视频麻豆一区 | 中文字幕在线观看高清| 日韩欧美一级二级| 免费在线观看污视频| 成人444kkkk在线观看| 日本午夜大片a在线观看| 国产美女精品视频| 久久综合五月婷婷| 亚洲一区二区在线免费观看| 亚洲激情午夜| 亚洲另类第一页| 99re视频这里只有精品| 二区三区四区视频| 欧美日韩美女在线观看| 国产免费黄色片| 亚洲性xxxx| av电影在线免费| 国产日韩欧美在线播放| swag国产精品一区二区| 在线视频91| 久久人人超碰| 性猛交╳xxx乱大交| 国产精品视频免费| 日韩欧美成人一区二区三区| 日韩一区二区视频| 国产福利免费在线观看| 97精品免费视频| 97久久综合精品久久久综合| 一级日韩一区在线观看| 亚洲主播在线| 中文字幕一区二区人妻电影丶| 综合亚洲深深色噜噜狠狠网站| 日韩美一区二区| 亚洲第一中文字幕在线观看| 成人直播在线| 国产欧美精品一区二区三区-老狼 国产欧美精品一区二区三区介绍 国产欧美精品一区二区 | 激情五月婷婷网| 亚洲福利视频网站| 99在线播放| 成人激情视频网| 日韩电影免费网址| 9久久婷婷国产综合精品性色 | 免费一区二区视频| 麻豆av免费观看| 午夜精品一区二区三区免费视频 | 亚洲女人被黑人巨大进入| heyzo在线播放| 不卡一卡2卡3卡4卡精品在| 91精品推荐| 中文字幕一区二区在线观看视频| 国产精品无遮挡| 综合久久中文字幕| 曰本色欧美视频在线| 99re66热这里只有精品4| 乱色588欧美| 久久精品卡一| 国产毛片久久久久久久| 色香蕉成人二区免费| 牛牛影视精品影视| 日韩免费中文字幕| 国产伦精品一区二区三区千人斩 | 日本在线成人| 久久久久久久免费视频| 国产精品资源站在线| 午夜少妇久久久久久久久| 欧美一区二区网站| 成人在线影视| 国产不卡一区二区在线观看| 国产精品豆花视频| 丰满岳乱妇一区二区| 婷婷夜色潮精品综合在线| 天天综合永久入口| 欧美在线视频网| 全球成人免费直播| 中文字幕久久av| 有码一区二区三区| 粉嫩av一区二区夜夜嗨| 韩国视频理论视频久久| 三级小说欧洲区亚洲区| 久久精品免费网站| 亚洲欧美综合在线精品| 成人av无码一区二区三区| 久久人人爽人人| 视频一区中文| 污污网站在线观看视频| 一区二区三区中文免费| 天堂在线观看av| 国产精品成人免费电影| 亚洲一级淫片| 国产精品久久无码| 欧美特级限制片免费在线观看| 国产在线观看a视频| 精品视频在线观看| 秋霞影院一区二区| 久草国产在线观看| 亚洲人成在线观看网站高清| 天堂久久一区| 黄色一级在线视频| 欧美国产日韩亚洲一区| 国产手机av在线| 欧美亚洲成人免费| 99久久.com| 给我免费观看片在线电影的| 欧美男女性生活在线直播观看| 国内老司机av在线| 一本一本a久久| 91在线码无精品| 国产又粗又猛又爽又黄91| 97久久伊人激情网| 国产精品伦理久久久久久| 亚洲制服丝袜在线播放| 欧美精品在线一区二区三区| aa视频在线观看| 中国一级黄色录像| 久久久久久久综合日本| 午夜美女福利视频| 国产精品久久久久久久久久免费 | 成人做爰www看视频软件|