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

鴻蒙HarmonyOS官方模板學習 之 Grid Ability(Java)

開發 后端 OpenHarmony
使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML布局,顯示內容為兩部分網格表,網格每行顯示4個項目,網格內元素可進行拖拽排序。

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

Grid Ability(Java)

介紹

使用Java語言開發,用于Phone設備的Feature Ability模板,使用XML布局,顯示內容為兩部分網格表,網格每行顯示4個項目,網格內元素可進行拖拽排序。

搭建環境

安裝DevEco Studio,詳情請參考DevEco Studio下載。

設置DevEco Studio開發環境,DevEco Studio開發環境需要依賴于網絡環境,需要連接上網絡才能確保工具的正常使用,可以根據如下兩種情況來配置開發環境:

如果可以直接訪問Internet,只需進行下載HarmonyOS SDK操作。

如果網絡不能直接訪問Internet,需要通過代理服務器才可以訪問,請參考配置開發環境。

代碼結構解讀

注意:'#'代表注釋

后臺功能

  1. gridabilityjava 
  2.      │  MainAbility.java 
  3.      │  MyApplication.java 
  4.      │ 
  5.      ├─component 
  6.      │      DragLayout.java #自定義的拖拽功能組件 
  7.      │      GridView.java #自定義的Grid視圖組件,extends TableLayout 
  8.      │ 
  9.      ├─model 
  10.      │      GridItemInfo.java #Grid item 模型 
  11.      │ 
  12.      ├─provider 
  13.      │      GridAdapter.java #給Grid提供實例化好的item 組件列表;提供了計算單個item的寬度的方法 
  14.      │ 
  15.      ├─slice 
  16.      │      MainAbilitySlice.java #主能力頁,負責實例化自定義的DragLayout拖拽組件 
  17.      │ 
  18.      └─utils 
  19.              AppUtils.java #工具類,提供了從element資源中中獲取value;獲取屏幕的坐標的方法 

這是幾個java類之間的關系

HarmonyOS官方模板學習 之 Grid Ability(Java)-鴻蒙HarmonyOS技術社區

頁面資源

  1. resources 
  2.     ├─base 
  3.     │  ├─element 
  4.     │  │      color.json 
  5.     │  │      float.json 
  6.     │  │      integer.json 
  7.     │  │      string.json 
  8.     │  │ 
  9.     │  ├─graphic 
  10.     │  │      background_bottom_button.xml  #頁面底部按鈕形狀 
  11.     │  │      background_bottom_layout.xml  #頁面底部布局形狀 
  12.     │  │      background_item_active_button.xml #grid item 激活形狀 
  13.     │  │      background_item_button.xml    #grid item 默認形狀 
  14.     │  │      background_table_layout_down.xml  #下面的 grid 形狀 
  15.     │  │      background_table_layout_up.xml    #上面的 grid 形狀 
  16.     │  │ 
  17.     │  ├─layout 
  18.     │  │      ability_main.xml #主顯示頁面 
  19.     │  │      app_bar_layout.xml #app工具欄布局頁面 
  20.     │  │      grid_item.xml #單個grid item布局頁面 
  21.     │  │ 
  22.     │  ├─media 
  23.     │  │      5G.png 
  24.     │  │      back.png 
  25.     │  │      back_white.png 

頁面布局

ability_main.xml #主顯示頁

此頁面由DirectionalLayout、StackLayout、DependentLayout 布局構成,整體布局是上下布局。

上面時app工具欄,使用了StackLayout布局,通過includ標簽引入到主頁面。

下面是支持拖拽的GridView,由DependentLayout 和DirectionalLayout布局組成,使用的組件有ScrollView、GridView、Text、Button、Image。

HarmonyOS官方模板學習 之 Grid Ability(Java)-鴻蒙HarmonyOS技術社區

app_bar_layout.xml #app工具欄布局頁面

HarmonyOS官方模板學習 之 Grid Ability(Java)-鴻蒙HarmonyOS技術社區

grid_item.xml #單個grid item布局頁面

HarmonyOS官方模板學習 之 Grid Ability(Java)-鴻蒙HarmonyOS技術社區

后臺邏輯

1.初始化上面的GridView

先構建item模擬數據列表,將構建好的數據傳遞給GridAdapter 初始化item組件列表,通過GridView.setAdapter方法給每個item組件綁定長按事件,并設置GridView的TAG屬性(TAG就是指上面的GridView還是下面的GridView)。

  1. /** 
  2.  * 初始化上面的Grid item 
  3.  */ 
  4. private void initUpListItem() { 
  5.     //構建item模擬數據列表 
  6.     List<GridItemInfo> upperItemList = new ArrayList<>(); 
  7.     for (int i = 0; i < UP_ITEM_COUNT; i++) { 
  8.         int iconId = icons[i]; 
  9.         String text = texts[i]; 
  10.         upperItemList.add(new GridItemInfo(text, iconId, UP_GRID_TAG)); 
  11.     } 
  12.  
  13.     GridView gridView = (GridView) slice.findComponentById(ResourceTable.Id_grid_view_up); 
  14.     //將構建好的數據傳遞給GridAdapter 初始化item組件列表 
  15.     GridAdapter adapter = new GridAdapter(slice.getContext(), upperItemList); 
  16.  
  17.     //通過GridView.setAdapter方法給每個item組件綁定長按事件 
  18.     gridView.setAdapter(adapter, longClickListener); 
  19.     //設置GridView的TAG屬性 
  20.     gridView.setTag(UP_GRID_TAG); 

2.初始化下面的GridView

邏輯同上

  1. /** 
  2.  * 初始化下面的Grid item 
  3.  */ 
  4. private void initDownListItem() { 
  5.     String itemText = AppUtils.getStringResource(slice.getContext(), ResourceTable.String_grid_item_text); 
  6.     List<GridItemInfo> lowerItemList = new ArrayList<>(); 
  7.     for (int i = 0; i < DOWN_ITEM_COUNT; i++) { 
  8.         //隨意取的圖標 
  9.         int iconId = icons[i + 5]; 
  10.         String text = texts[i + 5]; 
  11.         lowerItemList.add(new GridItemInfo(text, iconId, DOWN_GRID_TAG)); 
  12.     } 
  13.  
  14.     if (slice.findComponentById(ResourceTable.Id_grid_view_down) instanceof GridView) { 
  15.         GridView gridView = (GridView) slice.findComponentById(ResourceTable.Id_grid_view_down); 
  16.         GridAdapter adapter = new GridAdapter(slice.getContext(), lowerItemList); 
  17.         gridView.setAdapter(adapter, longClickListener); 
  18.         gridView.setTag(DOWN_GRID_TAG); 
  19.     } 

 3.初始化底部的按鈕

這個地方做了一個屏幕適配,就是根據屏幕的寬度、邊距來設置按鈕的寬度,

同時添加了按鈕的監聽事件,點擊按鈕 關閉當前Ability。

  1. /** 
  2.  * Calculating button width based on screen width. 
  3.  * The actual width is the screen width minus the margin of the buttons. 
  4.  * 設置底部 2個按鈕的寬度 
  5.  */ 
  6. private void initBottomItem() { 
  7.     int screenWidth = AppUtils.getScreenInfo(slice.getContext()).getPointXToInt(); 
  8.     //計算按鈕寬度 
  9.     int buttonWidth = (screenWidth - AttrHelper.vp2px(80, slice.getContext())) / 2; 
  10.  
  11.     Component leftButton = slice.findComponentById(ResourceTable.Id_bottom_left_button); 
  12.     leftButton.setWidth(buttonWidth); 
  13.     //關閉Ability 
  14.     leftButton.setClickedListener(component -> slice.terminateAbility()); 
  15.  
  16.     Component rightButton = slice.findComponentById(ResourceTable.Id_bottom_right_button); 
  17.     rightButton.setWidth(buttonWidth); 
  18.     //關閉Ability 
  19.     rightButton.setClickedListener(component -> slice.terminateAbility()); 
  20.  

4.初始化app工具欄

這個沒做什么,似乎是想根據本地化信息,設置返回箭頭的方向,因為有的語言是從右往左看的。

  1. /** 
  2.  * 檢查指定 Locale 的文本布局是否從右到左。 
  3.  * 設置返回箭頭的方向 
  4.  */ 
  5. private void initAppBar() { 
  6.     if (TextTool.isLayoutRightToLeft(Locale.getDefault())) { 
  7.         Image appBackImg = (Image) slice.findComponentById(ResourceTable.Id_left_arrow); 
  8.         appBackImg.setRotation(180); 
  9.     } 

5.初始化監聽事件

包括返回按鈕的返回事件、ScrollView的touch事件。

touch事件包含大量的細節操作,如拖拽時有一個陰影效果,滾動條的處理,拖拽交換結束的處理,過渡效果,上下grid 有效區域的計算,拖拽完成將拖拽的組件添加到對應grid的操作等,參照著拿來用吧。

  1. /** 
  2.  * 初始化監聽事件,包括返回按鈕返回事件、ScrollView的touch事件 
  3.  */ 
  4. private void initEventListener() { 
  5.  
  6.     //‘返回按鈕’的監聽事件 
  7.     if (slice.findComponentById(ResourceTable.Id_left_arrow) instanceof Image) { 
  8.         Image backIcon = (Image) slice.findComponentById(ResourceTable.Id_left_arrow); 
  9.         // 
  10.         backIcon.setClickedListener(component -> slice.terminateAbility()); 
  11.     } 
  12.  
  13.     //ScrollView的 Touch事件監聽,拿來用就可以了 
  14.     scrollView.setTouchEventListener( 
  15.             (component, touchEvent) -> { 
  16.                 //按下屏幕的位置 
  17.                 MmiPoint downScreenPoint = touchEvent.getPointerScreenPosition(touchEvent.getIndex()); 
  18.  
  19.                 switch (touchEvent.getAction()) { 
  20.                     //表示第一根手指觸摸屏幕。這表示交互的開始 
  21.                     case TouchEvent.PRIMARY_POINT_DOWN: 
  22.                         currentDragX = (int) downScreenPoint.getX(); 
  23.                         currentDragY = (int) downScreenPoint.getY(); 
  24.                         //獲取指針索引相對于偏移位置的 x 和 y 坐標。 
  25.                         MmiPoint downPoint = touchEvent.getPointerPosition(touchEvent.getIndex()); 
  26.                         scrollViewTop = (int) downScreenPoint.getY() - (int) downPoint.getY(); 
  27.                         scrollViewLeft = (int) downScreenPoint.getX() - (int) downPoint.getX(); 
  28.                         return true
  29.                     //表示最后一個手指從屏幕上抬起。這表示交互結束 
  30.                     case TouchEvent.PRIMARY_POINT_UP: 
  31.                         //恢復下面grid的描述 
  32.                         changeTableLayoutDownDesc(ResourceTable.String_down_grid_layout_desc_text); 
  33.                     case TouchEvent.CANCEL: 
  34.                         if (isViewOnDrag) { 
  35.                             selectedView.setScale(1.0f, 1.0f); 
  36.                             selectedView.setAlpha(1.0f); 
  37.                             selectedView.setVisibility(Component.VISIBLE); 
  38.                             isViewOnDrag = false
  39.                             isScroll = false
  40.                             return true
  41.                         } 
  42.                         break; 
  43.  
  44.                     //表示手指在屏幕上移動 
  45.                     case TouchEvent.POINT_MOVE: 
  46.                         if (!isViewOnDrag) { 
  47.                             break; 
  48.                         } 
  49.                         int pointX = (int) downScreenPoint.getX(); 
  50.                         int pointY = (int) downScreenPoint.getY(); 
  51.  
  52.  
  53.                         this.exchangeItem(pointX, pointY); 
  54.  
  55.                         if (UP_GRID_TAG.equals(selectedView.getTag())) { 
  56.                             this.swapItems(pointX, pointY); 
  57.                         } 
  58.                         this.handleScroll(pointY); 
  59.                         return true
  60.                 } 
  61.                 return false
  62.             } 
  63.     ); 
  64.  

復制歸納總結

1.自定義組件在構造函數中傳遞slice

這樣的目的是便于獲取頁面的其它組件。

  1. Component itemLayout=LayoutScatter.getInstance(slice.getContext()) 
  2. .parse(ResourceTable.Layout_grid_item, nullfalse); 

需要注意的是slice指代的是頁面,但是自定義組件往往是有自己的布局文件的,一般不在slice中,所以不要通過slice獲取自定義組件的子組件,獲取不到,不過可以通過LayoutScatter獲取

  1. //錯誤的方式 
  2. Component gridItem=  slice.findComponentById(ResourceTable.Layout_grid_item); 
  3. //正確的方式 
  4. Component gridItem = LayoutScatter.getInstance(context).parse(ResourceTable.Layout_grid_item, nullfalse); 

2.單位轉換vp2px

java組件對象寬高、邊距的單位默認時px,

從element中獲取的值需要進行單位轉換,可以使用AttrHelper.vp2px 將vp轉換為px。

  1. if (gridItem.findComponentById(ResourceTable.Id_grid_item_text) instanceof Text) { 
  2.     Text textItem = (Text) gridItem.findComponentById(ResourceTable.Id_grid_item_text); 
  3.     textItem.setText(item.getItemText()); 
  4.     textItem.setTextSize(AttrHelper.fp2px(10, context)); 

3.子組件的獲取

獲取一個組件對象后,可以使用該組件對象的findComponentById方法繼續獲取內部的子組件

  1. Component gridItem = LayoutScatter.getInstance(context).parse(ResourceTable.Layout_grid_item, nullfalse); 
  2. Image imageItem = (Image) gridItem.findComponentById(ResourceTable.Id_grid_item_image); 

4.TableLayout的使用

TableLayout繼承自ComponentContainer,提供用于在帶有表格的組件中排列組件的布局。

TableLayout 提供了用于對齊和排列組件的接口,以在帶有表格的組件中顯示組件。 排列方式、行列數、元件位置均可配置。

例如 removeAllComponents();可以用來清除 ComponentContainer 管理的所有組件,addComponent 用來將組件添加到ComponentContainer 容器中。示例中GridView就是繼承自TableLayout。

  1. /** 
  2.  * The setAdapter 
  3.  * 
  4.  * @param adapter adapter 
  5.  * @param longClickedListener longClickedListener 
  6.  */ 
  7. void setAdapter(GridAdapter adapter, LongClickedListener longClickedListener) { 
  8.     //清除 ComponentContainer 管理的所有組件 
  9.     removeAllComponents(); 
  10.     //遍歷item組件列表 
  11.     for (int i = 0; i < adapter.getComponentList().size(); i++) { 
  12.         //為組件中的長按事件注冊一個監聽器(組件被點擊并按住) 
  13.         adapter.getComponentList().get(i).setLongClickedListener(longClickedListener); 
  14.         //將組件添加到容器中 
  15.         addComponent(adapter.getComponentList().get(i)); 
  16.     } 

效果展示

示例代碼模擬了一下手機控制中心,編輯快捷開關的效果

原效果模擬效果

文章相關附件可以點擊下面的原文鏈接前往下載

原文鏈接:https://harmonyos.51cto.com/posts/4776

想了解更多內容,請訪問:

51CTO和華為官方合作共建的鴻蒙技術社區

https://harmonyos.51cto.com

 

責任編輯:jianghua 來源: 鴻蒙社區
相關推薦

2021-06-28 14:41:36

鴻蒙HarmonyOS應用

2021-06-18 14:55:57

鴻蒙HarmonyOS應用

2021-05-28 17:01:49

鴻蒙HarmonyOS應用

2021-08-30 18:34:35

鴻蒙HarmonyOS應用

2020-12-30 11:08:50

鴻蒙HarmonyOShelloWorld

2020-11-17 11:48:44

HarmonyOS

2020-11-25 12:02:02

TableLayout

2021-01-06 10:59:14

鴻蒙HarmonyOSPage Abilit

2021-01-04 11:44:05

鴻蒙HarmonyOSAbilitySlic

2020-12-28 11:19:06

鴻蒙HarmonyOSPage Abilit

2021-01-12 09:42:05

鴻蒙HarmonyOSPage Abilit

2023-03-08 08:33:44

Javajavac命令

2021-10-18 10:14:26

鴻蒙HarmonyOS應用

2020-03-26 10:43:57

CSS Grid Ge Grid代碼

2021-09-18 14:40:37

鴻蒙HarmonyOS應用

2022-02-17 21:05:26

AbilityJS FAJava PA

2021-05-27 14:57:12

HarmonyOS 鴻蒙時代

2020-12-22 11:09:20

鴻蒙Feature AbiAbilitySlic

2021-03-05 15:55:10

鴻蒙HarmonyOS應用開發

2020-12-01 15:54:08

鴻蒙構建系統
點贊
收藏

51CTO技術棧公眾號

亚洲婷婷综合色高清在线| av大全在线观看| 亚洲综合影视| caoporen国产精品视频| 国产精品盗摄久久久| 呻吟揉丰满对白91乃国产区| 国产精品一区免费在线| 午夜精品在线看| 日韩一区国产在线观看| av无码精品一区二区三区宅噜噜| 亚洲狼人精品一区二区三区| 在线精品国产欧美| 男人的天堂免费| 亚洲精品动漫| 亚洲综合成人网| 欧洲亚洲一区二区| 免费观看黄色一级视频| 热久久免费视频| 久久久久久久av| 1024手机在线观看你懂的| 一区二区三区视频播放| 欧洲生活片亚洲生活在线观看| 黄色三级中文字幕| 1769在线观看| 91在线精品秘密一区二区| 国产专区欧美专区| 国产性生活免费视频| 中出视频在线观看| 成人网av.com/| 色狠狠一区二区| www污在线观看| 久操视频在线| 欧美激情中文字幕| 久久久久久精| 亚洲精品一区二区三区四区| 另类成人小视频在线| 日本精品中文字幕| 麻豆chinese极品少妇| 久久人人99| 日韩精品在线免费播放| 亚洲AV成人精品| 亚洲精品无播放器在线播放| 色噜噜久久综合| 国产毛片视频网站| 日本片在线看| 日韩码欧中文字| 五月天亚洲综合| 嫩草在线播放| 99久久99久久免费精品蜜臀| 91九色偷拍| 国产乱码一区二区| 九色综合狠狠综合久久| 国产精品∨欧美精品v日韩精品| 国产成人无码精品久久久久| 亚洲视频日本| 欧美激情久久久久久| 国产大片免费看| 亚洲二区三区不卡| 精品国产网站地址| 天天鲁一鲁摸一摸爽一爽| 波多野结衣在线播放一区| 国产亚洲福利一区| 神马久久久久久久久久久 | 成人xxxx视频| 97超碰人人模人人人爽人人爱| 日韩电影在线一区| 国产精品久久在线观看| 国产无遮挡又黄又爽又色视频| 午夜在线视频一区二区区别| 欧美与黑人午夜性猛交久久久| 国产91av视频| 国产欧美二区| 青青草一区二区| 色屁屁影院www国产高清麻豆| 国产精品普通话对白| 国产91精品久久久久| 中文字幕一区在线播放| 日韩有码一区二区三区| 国产欧美日韩专区发布| 国产露脸91国语对白| 高清国产一区二区三区| 精品91免费| 免费人成在线观看网站| 国产精品视频一二三区| 中国人体摄影一区二区三区| 肉肉视频在线观看| 午夜电影久久久| 国产精品人人妻人人爽人人牛| av在线不卡精品| 日韩欧美国产综合在线一区二区三区| 天天躁日日躁狠狠躁av麻豆男男 | 毛片视频免费播放| 欧美全黄视频| 青青草99啪国产免费| 中文字幕一区二区久久人妻| 国产一区二区不卡| 精品欧美一区二区在线观看视频| 激情综合闲人网| 自拍视频在线观看一区二区| 妞干网在线视频观看| 色老太综合网| 日韩丝袜美女视频| 91视频在线网站| 天天射天天综合网| 668精品在线视频| 久久福利影视| 中文字幕日韩欧美| 永久看片925tv| 国产精品老牛| 91久久久久久久久久久| 五月婷婷六月激情| 国产精品美女久久久久久久久久久 | 丰满人妻老熟妇伦人精品| 免费高清不卡av| 国产精品中出一区二区三区| 91.xxx.高清在线| 亚洲电影一级黄| 日韩欧美国产片| 欧美顶级毛片在线播放| 久久精品视频在线播放| 天天操夜夜操视频| 国产盗摄女厕一区二区三区| 日韩欧美精品在线不卡| 久久不射影院| 欧美日产在线观看| aaaaa一级片| 欧美96在线丨欧| 国产精品日韩在线观看| 午夜激情小视频| 一个色在线综合| 亚洲精品综合在线观看| 国产一区二区三区日韩精品| 国产69精品久久久久9999| 国产又粗又猛又黄| 国产视频911| 久久综合色视频| 一区二区亚洲视频| 久久综合免费视频| 亚洲一区二区人妻| 国产亚洲午夜高清国产拍精品| 日韩精品在线中文字幕| 欧美经典影片视频网站| 色哟哟入口国产精品| 最近免费中文字幕大全免费版视频| 成人一区二区三区中文字幕| 黑人巨大国产9丨视频| 国产成人精品一区二区三区在线 | 欧美性少妇18aaaa视频| 亚洲国产精品第一页| 亚洲最大av| 成人精品网站在线观看| 99reav在线| 欧美色倩网站大全免费| 亚洲无人区码一码二码三码的含义| 美女诱惑一区| 日韩精品一区二区三区外面| 中文字幕一区久| 日韩精品免费在线| 日本中文字幕第一页| 91美女在线观看| 91猫先生在线| 天天做夜夜做人人爱精品 | 手机看片福利永久国产日韩| 美女网站视频一区| 一本色道久久综合狠狠躁篇的优点| 天堂а√在线中文在线新版| 国产亚洲一区二区三区| 欧美午夜aaaaaa免费视频| 人人狠狠综合久久亚洲婷| 国产欧美日韩免费| 男人天堂手机在线| 日韩欧美视频一区| 豆国产97在线 | 亚洲| 不卡一区二区三区四区| 人妻精品无码一区二区三区| 国产伦精品一区二区三区视频 | av在线这里只有精品| 97国产精东麻豆人妻电影| 亚洲精品国产setv| 国产精品视频yy9099| 黄网页免费在线观看| 精品少妇一区二区三区在线播放 | 丝袜美腿美女被狂躁在线观看| 欧美日韩国产一二三| 欧美色图一区二区| 播五月开心婷婷综合| 免费黄色福利视频| 成人网18免费网站| 91精品国产99久久久久久红楼| 欧美性爽视频| 亚洲视频网站在线观看| 国产免费久久久| 精品日本高清在线播放| 少妇精品无码一区二区免费视频| 国产九色精品成人porny| 可以在线看的av网站| 成人看的羞羞网站| 国产精品日韩一区二区| 精品肉辣文txt下载| 欧美巨乳美女视频| 日本成人一区二区三区| 91精品国产综合久久精品图片| 日本少妇激情视频| 国产精品久久久久一区二区三区共| 国产人妖在线观看| 日本美女一区二区三区| 国产一区二区片| 欧美色网址大全| 91精品国产综合久久久久久丝袜| 日韩av大片站长工具| 欧美日韩成人在线播放| 丁香在线视频| 亚洲国产精品字幕| 国产有码在线观看| 色婷婷av一区二区| 久久综合成人网| 国产精品女主播av| 黄色a一级视频| 国产精品自拍在线| xxx国产在线观看| 亚洲欧美日韩国产综合精品二区| 粉嫩av一区二区三区天美传媒| 国产精品免费不| 激情五月综合色婷婷一区二区| 成人久久精品| 国产欧美精品xxxx另类| 欧美xnxx| 国产97在线|日韩| 日本黄色免费在线| 色与欲影视天天看综合网| 在线视频二区| 亚洲网站视频福利| 亚洲 美腿 欧美 偷拍| 欧美大肚乱孕交hd孕妇| 国产精品无码免费播放| 色综合天天视频在线观看| 日韩少妇高潮抽搐| 亚洲在线成人精品| 在线观看成人毛片| 综合电影一区二区三区| 国产又粗又长又硬| 国产精品网站导航| 波多野吉衣中文字幕| 成人国产精品免费网站| 波多野结衣三级视频| 国产一区二区三区av电影| 中文字幕av专区| 美腿丝袜亚洲色图| 精品999在线| 奇米精品一区二区三区在线观看 | 黑人操日本美女| 国产精品嫩草影院av蜜臀| 日韩不卡av在线| 国产精品你懂的在线| 免费成人深夜蜜桃视频| 国产精品久久久久久亚洲毛片| 四虎国产精品成人免费入口| 国产亚洲精品aa| 欧美18—19性高清hd4k| 欧美韩国日本一区| 国产无遮挡在线观看| 国产精品网友自拍| 成人高潮免费视频| 亚洲精品日韩一| 精品深夜av无码一区二区老年| 亚洲综合丝袜美腿| 日本道在线观看| 色悠久久久久综合欧美99| 亚洲中文字幕无码爆乳av| 在线精品亚洲一区二区不卡| 做爰无遮挡三级| 欧美精品日韩一本| 精品人妻伦一二三区久久 | a中文在线播放| 中文字幕一区日韩电影| 黄色网在线免费看| 久久久久久com| 美女一区网站| 国产欧美久久久久久| julia中文字幕一区二区99在线| 国产一区二区免费在线观看| 国产伦精品一区二区三区视频| 亚洲一区二区三区精品在线观看| 一精品久久久| 亚洲熟妇无码另类久久久| 男男视频亚洲欧美| 日本在线视频播放| 91视频.com| 殴美一级黄色片| 亚洲一二三四久久| 青青草视频在线观看免费| 欧美一级片在线观看| 深夜影院在线观看| 精品国内自产拍在线观看| 超碰在线网站| 国产精品老女人精品视频| 久久久久久爱| 欧美一区二区三区四区在线观看地址| 久久精品国产www456c0m| 800av在线免费观看| 美日韩一级片在线观看| 年下总裁被打光屁股sp | 日韩欧美电影一区二区| 欧美激情麻豆| 91视频免费版污| 大白屁股一区二区视频| 免费网站在线高清观看| 亚洲福中文字幕伊人影院| 中文字幕乱码在线观看| 亚洲成年人在线播放| 中文字幕日本在线观看| 欧美一级视频一区二区| 日本精品视频| 午夜一区二区三区| 夜夜嗨网站十八久久| 在线视频观看一区二区| 久久久久9999亚洲精品| 国产亚洲第一页| 欧美浪妇xxxx高跟鞋交| 欧美女v视频| 久久久久久尹人网香蕉| 在线免费成人| 日本黄网免费一区二区精品| 精久久久久久| 欧美69精品久久久久久不卡 | 91免费公开视频| 懂色av影视一区二区三区| www.污视频| 久久精品国产精品亚洲| 成人免费网站www网站高清| 久久99国产精品99久久| 欧美视频导航| www.污污视频| 国产精品久久精品日日| 波多野结衣在线观看一区| 亚洲精品大尺度| 国产三级伦理在线| 99电影在线观看| 综合久久久久| 久久综合在线观看| 国产精品成人免费在线| 中文字幕在线观看精品| 亚洲片av在线| 国精产品一区二区三区有限公司| 精品无码久久久久久久动漫| 亚洲一级黄色| 国产视频精品视频| 亚洲一区在线播放| 亚洲国产精品视频在线| 色综合久久精品亚洲国产| 国产一区二区三区精品在线观看| 中文字幕不卡每日更新1区2区| 毛片av中文字幕一区二区| 四虎成人免费影院| 欧美日韩色一区| 欧美性天天影视| 91精品国产自产在线观看永久| 99久久99久久精品国产片桃花 | 大陆极品少妇内射aaaaaa| 国产一区二区网址| www青青草原| 欧美videossexotv100| 牛牛精品在线| 久99久在线| 老妇喷水一区二区三区| 在线视频第一页| 欧美日韩一级片网站| 黄色网址在线免费观看| 成人欧美一区二区| 国产精品视频| 国产美女永久免费无遮挡| 欧美日韩在线播放| 菠萝菠萝蜜在线视频免费观看| 91牛牛免费视频| 精品成人一区| av黄色免费网站| 欧美揉bbbbb揉bbbbb| 在线看一级片| 久久草.com| 蜜臀av一区二区| 久久精品视频免费在线观看| 亚洲国产毛片完整版| 欧美一区国产| 国产美女视频免费| 成人午夜电影网站| 成人h动漫精品一区二区下载| 丝袜亚洲另类欧美重口| 亚洲精品aⅴ| 国产极品美女高潮无套久久久| 国产精品久久久久7777按摩 | 成人国产一区二区三区精品| 岛国av中文字幕| 久久视频在线播放| 天堂一区二区三区四区| 国产永久免费网站| 亚洲va在线va天堂| 午夜免费福利在线观看| 国产欧美日韩亚洲| 老司机精品视频在线| 日韩av电影网|