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

HarmonyOS PageSlider組件使用(二)Provider介紹

開發 前端 OpenHarmony
PageSliderProvider類提供頁面項管理功能,例如計算可用視圖的數量和在指定位置創建組件。您需要繼承并實現PageSliderProvider,以便在不同的頁面上顯示多個視圖。

[[422095]]

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

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

https://harmonyos.51cto.com

一、簡要概述

PageSliderProvider是為PageSlider組件提供用于管理頁面視圖的頁面適配器。

PageSliderProvider類提供頁面項管理功能,例如計算可用視圖的數量和在指定位置創建組件。您需要繼承并實現PageSliderProvider,以便在不同的頁面上顯示多個視圖。

PageSliderProvider類的使用比較簡單,但在復雜業務場景下使用時,需要做的工作比較多,而且這些工作都有重復性。所以在編寫本章節案例的同時,我對PageSliderProvider進行了一下通用封裝,并且把代碼共享到了碼云Gitee上,同時將封裝的代碼打包成har包,提交到了Maven中央倉庫,供大家使用。

碼云Gitee倉庫地址

二、方法介紹

需要掌握的PageSliderProvider類方法不多,一般只需要重寫下面四個方法即可為PageSlider提供Page數據支持。

PageSliderProvider類還提供了Page頁面數據刷新需要用到的方法,這部分方法可以相互配合,達到精準更新Page頁面數據。

三、封裝解析

PageSliderProvider是一個abstract抽象類,每次使用此類的時候都需要繼承它,并重寫相應的抽象方法。這種重復的工作,寫多了,既繁瑣,又浪費時間,降低開發效率。所以秉著高效易用的目的,先對PageSliderProvider進行一定封裝。

數據源的封裝。在常規業務開發模式中,為PageSliderProvider提供頁面元數據是最基礎的工作,一般都是將一個復雜的Object對象實例集合加入到一個List列表中。考慮數據的通用性,這里我們也將采用泛型來封裝PageSliderProvider類。

  1. public abstract class BasePageSliderProvider<M> extends PageSliderProvider { 
  2.  
  3.     //頁面加載數據源 
  4.     private final List<M> mPageSliderSourceData; 
  5.  
  6.     //構造函數初始化列表集合 
  7.     public BasePageSliderProvider() { 
  8.         this.mPageSliderSourceData = new ArrayList<>(); 
  9.     } 
  10.      
  11.     /** 
  12.      * 對外提供清除數據源的操作方法, 
  13.      * 
  14.      * 后續需要根據業務自行判斷是否需要調用notifyDataChanged()方法 
  15.      */ 
  16.     public final void clearSourceData() { 
  17.         mPageSliderSourceData.clear(); 
  18.     } 
  19.  
  20.     /** 
  21.      * 對外提供設置/重置數據源的操作方法, 
  22.      * 
  23.      * 后續需要根據業務自行判斷是否需要調用notifyDataChanged()方法 
  24.      * @param data 
  25.      */ 
  26.     public final void setSourceData(List<M> data) { 
  27.         if (!data.isEmpty()) { 
  28.             mPageSliderSourceData.clear(); 
  29.             mPageSliderSourceData.addAll(data); 
  30.         } 
  31.     } 
  32.  
  33.     /** 
  34.      * 對外追加數據源的操作方法,可能在加載更多數據的時候有用。 
  35.      * 
  36.      * 后續需要根據業務自行判斷是否需要調用notifyDataChanged()方法 
  37.      * @param data 
  38.      */ 
  39.     public final void appendSourceData(List<M> data) { 
  40.         if (!data.isEmpty()) { 
  41.             mPageSliderSourceData.addAll(data); 
  42.         } 
  43.     } 
  44.  
  45.     /** 
  46.      * 對外提供刪除指定數據源的操作方法, 
  47.      * 
  48.      * 后續需要根據業務自行判斷是否需要調用notifyDataChanged()方法 
  49.      * @param data 
  50.      */ 
  51.     public final void removeSourceData(M data) { 
  52.         if (data != null) { 
  53.             mPageSliderSourceData.remove(data); 
  54.         } 
  55.     } 
  56.  
  57.     /** 
  58.      * 對外提供獲取指定位置數據的操作方法 
  59.      * @param position 
  60.      * @return 
  61.      */ 
  62.     public final M getItem(int position) { 
  63.         return mPageSliderSourceData.get(position); 
  64.     } 
  65.  
  66.     /** 
  67.      * 并使用final修飾,防止子類繼承重寫,導致出現問題。 
  68.      * @return 
  69.      */ 
  70.     @Override 
  71.     public final int getCount() { 
  72.         return mPageSliderSourceData.size(); 
  73.     } 
  74.      
  75. }     

在重寫PageSliderProvider類的getCount()抽象方法時,對此方法使用了final關鍵字修飾,目的是為了防止子類繼承重寫,導致出現問題。

頁面視圖組件的封裝。頁面視圖組件是嵌入式設備應用開發中最需要關心的一件事情,嵌入式設備因內存資源是有限的的,而頁面視圖組件占用內存資源都還比較大,處理不好,甚至影響應用的流暢性和穩定性。所以在對頁面視圖組件封裝時,需要考慮視圖組件的快速創建和及時回收,防止內存泄露/溢出等問題。

在以往的應用開發經驗中,ViewHolder綁定視圖組件是一種非常高效解決視圖組件回收復再利用的好模式。本次我們也使用這種ViewHolder模式來封裝頁面視圖組件,并在PageSliderProvider類中進行簡單的組件回收和再利用處理。

創建一個PageViewHolder類,用于綁定頁面視圖組件。在PageViewHolder類中進行簡單的視圖組件封裝,業務開發中繼承本類,去實現更多跟復雜的組件操作。

  1. public abstract class PageViewHolder { 
  2.  
  3.     protected final Component component; 
  4.  
  5.     public PageViewHolder(Component component) { 
  6.         this.component = component; 
  7.     } 
  8.  
  9.     /** 
  10.      * 返回綁定的視圖組件 
  11.      * @return 
  12.      */ 
  13.     public final Component getComponent() { 
  14.         return component; 
  15.     } 

具體的業務開發中,使用的ViewHolder肯定是PageViewHolder的子類,是無法確定具體的實例對象類型的。所以在重寫PageSliderProvider類的時候,我們也需要采用泛型來達到通用性。

頁面視圖組件的回收和再利用,常規簡單操作我們都是使用列表或者隊列進行存儲,模擬回收站功能。在創建組件和銷毀組件的方法中進行再利用和回收操作,已達到可以反復循環利用的目的,減少頁面視圖組件的多次創建帶來的性能消耗。

  1. public abstract class BasePageSliderProvider<M, VH extends PageViewHolder> extends PageSliderProvider { 
  2.  
  3.     //頁面PageViewHolder緩存,主要保存當前處于活躍狀態的PageViewHolder對象 
  4.     private final HashMap<Integer, VH> mPageSliderComponentCache; 
  5.  
  6.     //頁面PageViewHolder回收站 
  7.     private final Queue<VH> mPageSliderComponentRecyclers; 
  8.  
  9.      
  10.     public BasePageSliderProvider() { 
  11.         this.mPageSliderComponentCache = new HashMap<>(); 
  12.         this.mPageSliderComponentRecyclers = new LinkedBlockingQueue<>(); 
  13.     } 
  14.  
  15.     /** 
  16.      * 對外提供獲取指定位置PageViewHoder對象的方法 
  17.      * @param position 
  18.      * @return 
  19.      */ 
  20.     public final VH getPageViewHolder(int position) { 
  21.         return mPageSliderComponentCache.get(position); 
  22.     } 
  23.  
  24.     @Override 
  25.     public Object createPageInContainer(ComponentContainer componentContainer, int index) { 
  26.         if (componentContainer == null || index >= getCount()) { 
  27.             return Optional.empty(); 
  28.         } 
  29.  
  30.         //從PageViewHolder回收站中獲取對象,如果沒有,創建新的PageViewHolder實例 
  31.         VH pageViewHolder = mPageSliderComponentRecyclers.poll(); 
  32.         if (pageViewHolder == null) { 
  33.             pageViewHolder = onCreatePageViewHolder(componentContainer, index); 
  34.         } 
  35.  
  36.         onBindPageViewHolder(pageViewHolder, index); 
  37.         componentContainer.addComponent(pageViewHolder.getComponent()); 
  38.         //添加到緩存中 
  39.         mPageSliderComponentCache.put(index, pageViewHolder); 
  40.  
  41.         return pageViewHolder; 
  42.     } 
  43.  
  44.     @Override 
  45.     public void destroyPageFromContainer(ComponentContainer componentContainer, int index, Object object) { 
  46.         if (componentContainer == null || index >= getCount()) { 
  47.             return
  48.         } 
  49.  
  50.         if (object instanceof PageViewHolder) { 
  51.             componentContainer.removeComponent(((PageViewHolder) object).getComponent()); 
  52.             mPageSliderComponentCache.remove(index); 
  53.             //回收已經被銷毀的PageViewHolder 
  54.             mPageSliderComponentRecyclers.offer((VH) object); 
  55.         } 
  56.     } 
  57.  
  58.     @Override 
  59.     public boolean isPageMatchToObject(Component component, Object object) { 
  60.         if (object instanceof PageViewHolder) { 
  61.             return component == ((PageViewHolder) object).getComponent(); 
  62.         } 
  63.         return component == object; 
  64.     } 
  65.  
  66.     /** 
  67.      * 創建并返回一個PageViewHolder對象 
  68.      * @param componentContainer 
  69.      * @param position 
  70.      * @return 
  71.      */ 
  72.     protected abstract VH onCreatePageViewHolder(ComponentContainer componentContainer, int position); 
  73.  
  74.     /** 
  75.      * 為指定位置的PageViewHolder對象綁定數據 
  76.      * @param holder 
  77.      * @param position 
  78.      */ 
  79.     protected abstract void onBindPageViewHolder(VH holder, int position); 
  80.      

四、應用實戰

經過一系列的簡單封裝,PageSliderProvider類使用起來就簡單了。我們就不需要再去為頁面數據和組件的綁定,重復的去造輪子。直接從BasePageSliderProvider類繼承,重寫onCreatePageViewHolder和onBindPageViewHolder兩個方法,直接綁定數據即可完成PageSlider組件的數據和頁面組件的提供。

1.在工程layout目錄下的創建Page頁面布局文件。比如:component_page.xml

  1. <?xml version="1.0" encoding="utf-8"?> 
  2. <DependentLayout 
  3.     xmlns:ohos="http://schemas.huawei.com/res/ohos" 
  4.     ohos:height="match_parent" 
  5.     ohos:width="match_parent"
  6.  
  7.     <Text 
  8.         ohos:id="$+id:text_component" 
  9.         ohos:height="match_parent" 
  10.         ohos:width="match_parent" 
  11.         ohos:text_size="32fp" 
  12.         ohos:text_font="sans-serif-medium" 
  13.         ohos:text_weight="800" 
  14.         ohos:text_color="#ffffff" 
  15.         ohos:text_alignment="center"/> 
  16.  
  17. </DependentLayout> 

2.繼承PageViewHolder類,綁定Page頁面布局組件。比如:CasePageViewHolder

  1. private static class CasePageViewHolder extends PageViewHolder { 
  2.  
  3.     private Text mTextCom; 
  4.  
  5.     public CasePageViewHolder(Component component) { 
  6.         super(component); 
  7.         mTextCom = (Text) component.findComponentById(ResourceTable.Id_text_component); 
  8.     } 
  9.  
  10.     public void setText(String text) { 
  11.         mTextCom.setText(text); 
  12.     } 
  13.  
  14.     public void setBackground(RgbColor color) { 
  15.         ShapeElement element = new ShapeElement(); 
  16.         element.setShape(ShapeElement.RECTANGLE); 
  17.         element.setRgbColor(color); 
  18.         mTextCom.setBackground(element); 
  19.     } 

3.繼承BasePageSliderProvider類,綁定Page頁面數據源和PageViewHolder。

  1. private static class CasePageSliderProvider extends BasePageSliderProvider<PageInfo, CasePageViewHolder> { 
  2.  
  3.     @Override 
  4.     protected CasePageViewHolder onCreatePageViewHolder(ComponentContainer componentContainer, int position) { 
  5.         LayoutScatter layoutScatter = LayoutScatter.getInstance(componentContainer.getContext()); 
  6.         Component component = layoutScatter.parse(ResourceTable.Layout_component_page, componentContainer, false); 
  7.         return new CasePageViewHolder(component); 
  8.     } 
  9.  
  10.     @Override 
  11.     protected void onBindPageViewHolder(CasePageViewHolder holder, int position) { 
  12.         PageInfo pageInfo = getItem(position); 
  13.         holder.setText(pageInfo.getContent()); 
  14.         holder.setBackground(pageInfo.getColor()); 
  15.     } 

4.初始Page頁面元數據和PageSlider組件,并將PageSliderProvider對象綁定到PageSlider組件中。

  1. public class MainAbilitySlice extends AbilitySlice { 
  2.  
  3.     private PageSlider mPageSlider; 
  4.     private CasePageSliderProvider mPageSliderProvider; 
  5.  
  6.     @Override 
  7.     public void onStart(Intent intent) { 
  8.         super.onStart(intent); 
  9.         super.setUIContent(ResourceTable.Layout_ability_main); 
  10.         mPageSlider = (PageSlider) findComponentById(ResourceTable.Id_page_slider_component); 
  11.  
  12.         mPageSliderProvider = new CasePageSliderProvider(); 
  13.         mPageSliderProvider.setSourceData(createAndInitPageData()); 
  14.         mPageSlider.setProvider(mPageSliderProvider); 
  15.     } 
  16.  
  17.     //初始化Page頁面元數據 
  18.     private List<PageInfo> createAndInitPageData(){ 
  19.         List<PageInfo> initData = new ArrayList<>(); 
  20.         for (int i = 0; i < 15; i++) { 
  21.             PageInfo pageInfo = new PageInfo(); 
  22.             char tempChar = (char) (new Random().nextInt(26) + 65); 
  23.             pageInfo.setContent("Case " + String.valueOf(tempChar)); 
  24.             pageInfo.setColor(new RgbColor( 
  25.                     new Random().nextInt(255), 
  26.                     new Random().nextInt(255), 
  27.                     new Random().nextInt(255))); 
  28.             initData.add(pageInfo); 
  29.         } 
  30.         return initData; 
  31.     } 
  32.     
  33.     private static class PageInfo { 
  34.  
  35.         private String content; 
  36.         private RgbColor color; 
  37.  
  38.         public String getContent() { 
  39.             return content; 
  40.         } 
  41.  
  42.         public void setContent(String content) { 
  43.             this.content = content; 
  44.         } 
  45.  
  46.         public RgbColor getColor() { 
  47.             return color; 
  48.         } 
  49.  
  50.         public void setColor(RgbColor color) { 
  51.             this.color = color; 
  52.         } 
  53.     } 

五、總結

這里只是簡單的對PageSliderProvider類進行了一下封裝試用,并將代碼提交到了碼云Gitee倉庫,并進行了Maven中央倉庫管理。PageSliderProvider類其實還可以進行更多功能改造,封裝的更加高效易用,如果有意向,可以直接在碼云Gitee倉庫進行代碼共享哦。

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

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

https://harmonyos.51cto.com

 

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

2009-07-21 10:40:36

ASP.NET Pro

2021-09-30 10:04:01

鴻蒙HarmonyOS應用

2009-11-18 16:51:21

Oracle Prov

2018-04-20 15:24:55

DockerfileDocker鏡像

2009-12-29 10:40:36

ADO組件

2023-09-21 07:06:17

PSDriveProvider

2021-10-14 15:14:36

鴻蒙HarmonyOS應用

2009-07-10 18:06:59

JTree Swing

2011-04-28 10:41:12

simpleframeSimple

2009-07-17 14:38:51

輕量級Swing組件

2009-07-17 11:13:46

AWT和SwingSwing組件

2021-03-18 09:36:02

鴻蒙HarmonyOS應用

2021-09-13 15:17:28

鴻蒙HarmonyOS應用

2020-11-16 09:50:43

hpm-cli

2009-11-18 16:43:59

2009-08-25 13:38:35

C# Timer組件

2021-09-06 15:31:01

鴻蒙HarmonyOS應用

2011-09-13 15:35:40

Widget

2013-01-10 13:50:25

Android開發組件

2017-01-19 18:58:11

iOS組件化方案
點贊
收藏

51CTO技術棧公眾號

欧美变态另类刺激| 91入口在线观看| 殴美一级黄色片| 久久久久毛片免费观看| 亚洲国产日韩在线一区模特| 麻豆成人小视频| 在线观看中文字幕2021| 自产国语精品视频| 日韩电影免费观看中文字幕| 狠狠躁狠狠躁视频专区| 欧美黑人猛交的在线视频| 2020国产成人综合网| 国产美女久久精品| 久久久精品免费看| 伊人久久大香线蕉精品组织观看| 日韩av一区在线| 91在线第一页| 先锋欧美三级| 亚洲福利视频一区二区| 亚洲一区二区在线看| 欧美熟妇交换久久久久久分类| 日韩av在线发布| 欧美激情亚洲视频| 男女全黄做爰文章| 亚洲影院天堂中文av色| 欧美成人艳星乳罩| www.cao超碰| 成人影院入口| 亚洲成a人v欧美综合天堂| 中文字幕99| 大乳在线免费观看| 97se亚洲国产综合自在线 | 国产黄色小视频网站| 国产精品探花在线观看| 亚洲国产精品成人av| 美女又黄又免费的视频| 高清久久精品| 欧美日韩精品一区二区三区| 日本熟妇人妻中出| 男人皇宫亚洲男人2020| 天天综合日日夜夜精品| 国产日本在线播放| 国产又色又爽又黄刺激在线视频| 亚洲美女屁股眼交3| 中文精品一区二区三区| 欧美18一19xxx性| 中文av一区二区| 色综合视频二区偷拍在线 | 精品国偷自产在线视频99| 少妇无套高潮一二三区| 国产精品亚洲人成在99www| 日韩精品福利网站| 日本aaa视频| 五月国产精品| 亚洲欧美制服丝袜| 四虎国产精品成人免费入口| 亚洲制服一区| 亚洲天堂av网| 丁香花五月婷婷| 不卡一区2区| 色偷偷亚洲男人天堂| 黄色国产在线播放| 国产精品精品| 久久99久久久久久久噜噜| 欧美日韩在线国产| 亚洲大片在线| 国产91成人video| 亚洲第一网站在线观看| 首页欧美精品中文字幕| 国产精品xxx视频| 亚洲一级片免费看| 国产精品自拍av| 精品无人区一区二区三区竹菊| 免费毛片在线| 国产精品免费av| 亚洲精品天堂成人片av在线播放 | 欧美最顶级丰满的aⅴ艳星| 日韩色图在线观看| 日韩国产精品91| 国产主播精品在线| 丰满人妻一区二区| 久久女同精品一区二区| 中文字幕一区二区三区四区五区| 性直播体位视频在线观看| 亚洲大尺度视频在线观看| 成人一级片网站| crdy在线观看欧美| 日韩av在线导航| 一区二区三区在线播放视频| 国产精品va| 日本成人免费在线| 国产丝袜视频在线观看| 91丝袜美腿高跟国产极品老师 | 在线国产电影不卡| 一起草最新网址| 一区二区三区日本久久久| 久久精品国产免费观看| 国产九色在线播放九色| 精品在线观看视频| 久久综合久久久| 欧美成人三区| 日本韩国精品在线| 免费黄视频在线观看| 精品国产乱码久久久| 欧美激情精品久久久久久久变态| 日韩精品一区不卡| 成人性生交大片免费看中文网站| 日韩美女一区| 人人草在线视频| 日韩精品综合一本久道在线视频| 国产jjizz一区二区三区视频| 欧美精品aa| 国产日本欧美一区二区三区在线 | 在线视频精品一| 日本三级视频在线| 国产精品羞羞答答xxdd| 亚洲一区尤物| 三上悠亚激情av一区二区三区| 日韩欧美国产1| 最新日韩免费视频| 首页综合国产亚洲丝袜| 久久99欧美| 青青草原国产在线| 91精品国产91久久综合桃花 | 国产探花在线精品| 久久免费精品视频| 国产富婆一级全黄大片| 国产精品传媒视频| 老司机午夜av| 日日狠狠久久偷偷综合色| 久久久久久久影院| a级片免费观看| 国产精品久久久久aaaa| 欧美日韩在线免费播放| 天堂资源在线亚洲| 久久久亚洲国产| 亚洲成人黄色片| 亚洲精品菠萝久久久久久久| 国模私拍视频在线观看| 日韩欧美网址| 国产精品久久一区主播| 精品999视频| 色综合网站在线| 内射中出日韩无国产剧情| 欧美日韩国产在线一区| a级国产乱理论片在线观看99| av在线免费网址| 欧美一区二区三区啪啪| 免费在线观看黄色小视频| 麻豆91精品91久久久的内涵| 视频一区不卡| 久久精品嫩草影院| 最新日韩中文字幕| 国产精品国产三级国产aⅴ | 丰满少妇乱子伦精品看片| 成人国产精品免费| 免费看国产曰批40分钟| 色狼人综合干| 国产成人综合亚洲| 欧美性videos| 91精品国产91久久综合桃花 | 好吊一区二区三区| 国产精品v欧美精品v日韩精品| 青青草原国产在线| 亚洲成年人在线| av资源免费观看| 26uuu国产在线精品一区二区| 免费日韩视频在线观看| 国内精品久久久久久久久电影网| 国产97在线|日韩| 3p在线观看| 91精品久久久久久久99蜜桃| 校园春色 亚洲| 成人av电影在线| 韩国日本美国免费毛片| 日韩欧美一区二区三区在线视频 | 久久久久久久久爱| 欧美一级在线免费观看| 欧美性生交大片免网| 国产传媒国产传媒| 国产在线不卡一区| 欧美不卡在线播放| 不卡av一区二区| av资源站久久亚洲| 四虎4545www精品视频| 久久综合亚洲社区| 污污网站免费在线观看| 欧美在线三级电影| 久久国产精品波多野结衣| 26uuu精品一区二区三区四区在线 26uuu精品一区二区在线观看 | 色婷婷综合激情| 成年人二级毛片| av一区二区久久| 超碰超碰在线观看| 日韩一级欧洲| 日本一本草久p| 亚洲精品国模| 91中文字精品一区二区| 日韩在线影院| 久久久人成影片一区二区三区观看 | 亚洲电影有码| 欧美激情亚洲另类| 免费av在线网址| 日韩精品在线视频美女| 97久久人国产精品婷婷| 日韩欧美在线观看视频| 久久久久久久久久久久国产| 国产欧美一区二区精品婷婷| 任你躁av一区二区三区| 看国产成人h片视频| 大陆极品少妇内射aaaaa| 一区二区三区午夜探花| 日韩欧美一区二区视频在线播放| 丁香五月缴情综合网| 国产原创欧美精品| 成人福利av| 久久久久久亚洲精品中文字幕| 秋霞午夜在线观看| 亚洲天天在线日亚洲洲精| 后进极品白嫩翘臀在线视频| 欧美二区三区的天堂| 欧美精品一二三四区| 亚洲国产欧美在线| 岛国毛片在线观看| 国产精品高潮久久久久无| 级毛片内射视频| www成人在线观看| 精品久久久久一区二区| 国产一区二区三区在线观看精品 | 欧美成人一二区| 国产97免费视| 亚洲国产福利| 国产69久久精品成人看| 爱草tv视频在线观看992| 欧美成人午夜激情视频| 黄色网址视频在线观看| 日韩一区二区三区在线播放| 9色在线视频网站| 亚洲网在线观看| 免费一级在线观看播放网址| 亚洲精品福利资源站| 欧美 日韩 中文字幕| 亚洲精品一区在线观看| 韩国av在线免费观看| 欧美tickling网站挠脚心| 99在线观看精品视频| 91精品国产麻豆| 国产熟女一区二区三区五月婷| 91精品欧美综合在线观看最新 | 国产精品成人久久| 亚洲一区二区三区不卡国产欧美 | 午夜国产欧美理论在线播放| 一区视频二区视频| 婷婷综合视频| 在线观看三级网站| 欧美久色视频| 91黄色在线看| 欧美亚洲自偷自偷| 免费大片在线观看| 蜜臀av性久久久久蜜臀aⅴ四虎 | 成人在线免费看视频| 欧美色videos| 蜜臀尤物一区二区三区直播| 欧美四级电影在线观看| 一级特黄aaa| 精品国产免费一区二区三区香蕉| 懂色av蜜臀av粉嫩av分享吧| 亚洲国产中文字幕久久网| 国产精品国产高清国产| 亚洲欧洲视频在线| 日本三级视频在线播放| 欧美大奶子在线| 涩涩涩在线视频| 国产综合香蕉五月婷在线| 日本免费一区二区三区视频| 国产精品一区二区欧美黑人喷潮水| 欧美美女在线直播| 亚洲v国产v在线观看| 综合精品一区| 99蜜桃臀久久久欧美精品网站| 免费看精品久久片| 美女露出粉嫩尿囗让男人桶| 91蝌蚪porny成人天涯| 日韩毛片无码永久免费看| 综合亚洲深深色噜噜狠狠网站| 九九热国产精品视频| 一本一道久久a久久精品| 国产一区二区在线不卡| 亚洲国产小视频| 日韩av中文| 午夜精品在线视频| 黄色成人小视频| 好吊色欧美一区二区三区视频| 精品国产中文字幕第一页 | a毛片在线看免费观看| 69av视频在线播放| 999色成人| 欧美日韩精品免费看| 欧美 日韩 国产 一区| 欧美成人黑人猛交| 岛国一区二区在线观看| 国产美女网站视频| 欧美日韩中国免费专区在线看| 国产又粗又猛又爽又| 精品国产一区二区三区四区四| 成人三级黄色免费网站| 午夜精品视频在线| 日日狠狠久久| 欧美一区少妇| 99日韩精品| 真实乱偷全部视频| 国产精品毛片久久久久久久| 全部毛片永久免费看| 日韩精品中午字幕| 中文字幕日本在线| 国产精彩精品视频| 欧美精品密入口播放| 妺妺窝人体色www看人体| 美女脱光内衣内裤视频久久网站 | 别急慢慢来1978如如2| 成人午夜激情在线| 欧美爱爱免费视频| 欧美三级日韩在线| 久热av在线| 欧美一级大胆视频| 乱亲女h秽乱长久久久| 久久国产精品免费观看| 麻豆91在线播放免费| 一级特黄曰皮片视频| 色婷婷一区二区| 天堂中文在线资| 91国产精品91| 精品久久97| 少妇无码av无码专区在线观看| 国产精品夜夜爽| 成人免费视频网站入口::| 欧美人妇做爰xxxⅹ性高电影| 国产对白叫床清晰在线播放| 日本不卡视频在线播放| 日韩美女毛片| 久久国产亚洲精品无码| 9久草视频在线视频精品| 久热这里只有精品在线| 欧美sm美女调教| 成人影院在线视频| 国内视频一区| 日韩午夜黄色| 国精品无码人妻一区二区三区| 欧美日韩免费观看中文| 亚洲 欧美 自拍偷拍| 欧美自拍视频在线| 欧美日韩在线二区| 免费看黄色一级大片| 国产精品无圣光一区二区| 一本一道人人妻人人妻αv| 少妇高潮 亚洲精品| 日韩国产一二三区| 可以免费看的黄色网址| 国产福利一区二区三区视频| 国产亚洲精品女人久久久久久| 欧美精品一区二区蜜臀亚洲| 国产免费拔擦拔擦8x高清在线人| 国模一区二区三区私拍视频| 老鸭窝毛片一区二区三区| 国产一区二区三区四区五区六区 | 亚洲激情自拍视频| 亚洲精品97久久中文字幕| 韩日欧美一区二区| 欧美精品momsxxx| 成年人三级黄色片| 亚洲一级电影视频| 日本一二三区在线视频| 国产精品一区专区欧美日韩| 亚洲欧美色图| 日本一区二区在线免费观看| 欧美伊人久久久久久午夜久久久久| 五月婷婷在线视频| 成人av电影免费| 久久久久.com| 亚洲怡红院在线观看| 亚洲福利视频网| 久久爱.com| 日本免费a视频| 国产日韩欧美在线一区| 99久久精品国产色欲| 51精品国产黑色丝袜高跟鞋 | 精品国产一区久久久| 国产成人福利av| 成人黄色一区二区| 亚洲激情六月丁香| 国产黄色在线| 国产精品久久精品国产| 日本在线不卡一区| 久久综合色综合| 中文国产成人精品久久一| 成人资源在线| 日韩不卡一二三| 精品久久久久久久久久ntr影视| 成年人在线看| 免费看成人午夜电影|