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

HarmonyOS三方件開發指南(19)-BGABadgeView徽章組件

開發 OpenHarmony
文章由鴻蒙社區產出,想要了解更多內容請前往:51CTO和華為官方戰略合作共建的鴻蒙技術社區https://harmonyos.51cto.com

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

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

https://harmonyos.51cto.com

引言

現在很多的APP會有新消息/未接來電/未讀消息/新通知圓球紅點提示,典型的以微信、QQ新消息提示為例,當微信朋友圈有新的朋友更新/發布朋友圈消息后,在微信的底部切換卡上會有一個紅色的小圓球紅點,表示有新消息,提示用戶查看。在消息通訊類的app中十分實用。

功能介紹

鴻蒙BGABadgeView 徽章組件,主要功能包括:傳入圖片生成徽章,設置文本生成文本徽章,并且每個徽章都具有拖拽超范圍即可消除,范圍內即可回到原位置。模擬機效果圖如下

1.圖片徽章:

【軟通動力】HarmonyOS三方件開發指南(19)-BGABadgeView徽章組件

2.文字徽章:

3.拖動徽章爆炸:

使用時候,直接將其下載,作為一個har包導入到自己的項目中即可。下面則詳細介紹BGABadgeView 的使用以及開發指南。

BGABadgeView 使用指南

Ø 新建工程, 添加組件Har包依賴

在應用模塊中添加HAR,只需要將verificationcodeview-debug.har復制到entry\libs目錄下即可

Ø 修改配置文件

1. 修改主頁面的布局文件:

  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.     ohos:id="$+id:layout1" 
  7.     ohos:orientation="vertical"
  8.     <DependentLayout 
  9.         ohos:id="$+id:dependent1" 
  10.         ohos:height="200vp" 
  11.         ohos:width="match_parent"
  12.  
  13.         <com.example.bgabadgecomp_library.BAGDragBadgeImage 
  14.             ohos:top_margin="15vp" 
  15.             ohos:right_margin="10vp" 
  16.             ohos:bottom_margin="10vp" 
  17.             ohos:height="80vp" 
  18.             ohos:width="80vp" 
  19.             ohos:scale_mode="zoom_center" 
  20.             ohos:image_src="$media:avator" 
  21.             ohos:id="$+id:image1" 
  22.             ohos:below="$id:title" 
  23.             ohos:left_margin="30vp"/> 
  24.         <Image 
  25.             ohos:top_margin="15vp" 
  26.             ohos:right_margin="10vp" 
  27.             ohos:bottom_margin="10vp" 
  28.             ohos:height="80vp" 
  29.             ohos:width="80vp" 
  30.             ohos:scale_mode="zoom_center" 
  31.             ohos:image_src="$media:avator" 
  32.             ohos:id="$+id:image2" 
  33.             ohos:end_of="$id:image1" 
  34.             ohos:below="$id:title" 
  35.             ohos:left_margin="10vp"/> 
  36.            </DependentLayout> 
  37.         <Text 
  38.             ohos:left_margin="30vp" 
  39.             ohos:id="$+id:text1" 
  40.             ohos:top_margin="10vp" 
  41.             ohos:right_margin="15vp" 
  42.             ohos:bottom_margin="10vp" 
  43.             ohos:height="40vp" 
  44.             ohos:width="match_parent" 
  45.             ohos:text="測試1" 
  46.             ohos:below="$id:dependent1" 
  47.             ohos:text_size="20vp"/> 
  48. </DependentLayout> 

 2.修改MainAbilitySlice中的UI加載代碼

在MainAbilitySlince類的onStart函數中,增加如下代碼:

  1. @Override 
  2. public void onStart(Intent intent) { 
  3.     super.onStart(intent); 
  4.     super.setUIContent(ResourceTable.Layout_ability_main); 
  5.  
  6.     BAGDragBadgeImage bagDragBadgeImage = (BAGDragBadgeImage) findComponentById(ResourceTable.Id_image1); 
  7.     bagDragBadgeImage.setCornerRadius(bagDragBadgeImage.getWidth() / 2); // 圓形邊框 
  8.     DependentLayout stackLayout = (DependentLayout) findComponentById(ResourceTable.Id_layout1); 
  9.  
  10.     Image image2 = (Image) findComponentById(ResourceTable.Id_image2); 
  11.     image2.setCornerRadius(20); 
  12.  
  13.     DependentLayout.LayoutConfig config = new DependentLayout.LayoutConfig(DependentLayout.LayoutConfig.MATCH_PARENT, DependentLayout.LayoutConfig.MATCH_PARENT); 
  14.  
  15.     RoundRectImage roundRectImage = RoundRectImage.attach2Window(this, stackLayout, image2, config, BGABadgeViewHelper.getPixelMap(this, ResourceTable.Media_avatar_vip)); 
  16.  
  17.     RoundRectText roundRectText = RoundRectText.attach2Window(this, stackLayout, image3, config); 
  18.  
  19.     Text text1  = (Text) findComponentById(ResourceTable.Id_text1); 
  20.     RoundRectText roundText1 = RoundRectText.attach2Window(this, stackLayout, text1, config); 
  21.     roundText1.setBadgeText("qqqqqqqq"); 
  22.     List<Component> componentList = new ArrayList<>(); 
  23.     componentList.add(roundRectText); 
  24.     componentList.add(roundText1); 
  25.  
  26.     stackLayout.setTouchEventListener(new Component.TouchEventListener() { 
  27.         @Override 
  28.         public boolean onTouchEvent(Component component, TouchEvent event) { 
  29.  
  30.             switch (event.getAction()) { 
  31.                 case TouchEvent.PRIMARY_POINT_DOWN:// 手指第一次觸摸到屏幕 
  32.                     int startX = (int) event.getPointerPosition(event.getIndex()).getX(); 
  33.                     int startY = (int) event.getPointerPosition(event.getIndex()).getY(); 
  34.                    if (startX < roundRectImage.getCircleLeft() + 2 * roundRectImage.getCircleRadius() 
  35.                            && startX > roundRectImage.getCircleLeft() 
  36.                            && startY < roundRectImage.getCircleTop() + 2 * roundRectImage.getCircleRadius() 
  37.                            && startY > roundRectImage.getCircleTop()) { 
  38.                        roundRectImage.setDraggedListener(DRAG_HORIZONTAL_VERTICAL, roundRectImage ); 
  39.  
  40.                        for (Component component1 : componentList) { 
  41.                            component1.setDraggedListener(DRAG_HORIZONTAL_VERTICAL,null); 
  42.                        } 
  43.                    } else { 
  44.                        roundRectImage.setDraggedListener(DRAG_HORIZONTAL_VERTICAL, null ); 
  45.  
  46.                        for (Component component1 : componentList) { 
  47.                            RoundRectText rectText = (RoundRectText) component1; 
  48.                            if (startX < rectText.getCircleLeft() + 2 * rectText.getRadius() 
  49.                                    && startX > rectText.getCircleLeft() 
  50.                                    && startY < rectText.getCircleTop() + 2 * rectText.getRadius() 
  51.                                    && startY > rectText.getCircleTop()) { 
  52.                                component1.setDraggedListener(DRAG_HORIZONTAL_VERTICAL, (Component.DraggedListener) component1); 
  53.                            } else { 
  54.                                component1.setDraggedListener(DRAG_HORIZONTAL_VERTICAL,null); 
  55.                            } 
  56.                        } 
  57.                    } 
  58.  
  59.                     break; 
  60.                 case TouchEvent.PRIMARY_POINT_UP: 
  61.                 case TouchEvent.POINT_MOVE: 
  62.                 default
  63.                     break; 
  64.             } 
  65.             return true
  66.         } 
  67.     }); 

 復制通過以上兩個步驟,就實現了簡單的徽章組件,接下來在一起看下徽章組件是如何實現的。

BGABadgeView 開發指南

新建一個Module

新建一個Module,類型選擇HarmonyOS Library,模塊名為VerificationCodeView,如圖:

新建一個RoundRectText類

1.實現自定義RoundRectText繪制

  1. @Override 
  2. public void onDraw(Component component, Canvas canvas){ 
  3.     length = mBadgeText.length(); 
  4.     Paint mTextPain = new Paint(); 
  5.     mTextPain.setColor(Color.WHITE); 
  6.     mTextPain.setStyle(Paint.Style.FILL_STYLE); 
  7.     mTextPain.setTextSize(30); 
  8.     mTextPain.setFont(Font.DEFAULT); 
  9.     Rect textBounds = mTextPain.getTextBounds(mBadgeText); 
  10.  
  11.     Paint mBadgePaint = new Paint(); 
  12.     mBadgePaint.setColor(Color.RED); 
  13.     mBadgePaint.setStyle(Paint.Style.FILL_STYLE); 
  14.     mBadgePaint.setStrokeWidth(5); 
  15.     if (mBadgeRectF == null) { 
  16.         switch (mBadgeGravity) { 
  17.             case RightTop: 
  18.                 int left = mComponent.getLeft(); 
  19.                 int top = mComponent.getTop(); 
  20.                 circleLeft = mComponent.getWidth() + left - 2 * radius - 15 * (length - 2); 
  21.                 circleTop = top
  22.                 mBadgeRectF = new RectFloat( circleLeft, circleTop, circleLeft + 2 * radius + 15 * (length - 2)  , circleTop + 2 * radius); 
  23.                 break; 
  24.             case RightCenter: 
  25.                 left = mComponent.getLeft(); 
  26.                 top = mComponent.getTop(); 
  27.                 circleLeft = mComponent.getWidth() + left - 2 * radius - 15 * (length - 2); 
  28.                 circleTop = top + (float)mComponent.getHeight() / 2 - radius; 
  29.                 mBadgeRectF = new RectFloat( circleLeft, circleTop, circleLeft + 2 * radius + 15 * (length - 2) , circleTop + 2 * radius); 
  30.  
  31.                 break; 
  32.             case RightBottom: 
  33.                 mBadgeRectF = new RectFloat(); 
  34.                 left = mComponent.getLeft(); 
  35.                 top = mComponent.getTop(); 
  36.                 circleLeft = mComponent.getWidth() + left - 2 * radius - 15 * (length - 2) ; 
  37.                 circleTop = top + mComponent.getHeight() - 2 * radius; 
  38.                 mBadgeRectF = new RectFloat( circleLeft, circleTop, circleLeft + 2 * radius + 15 * (length - 2) , circleTop + 2 * radius); 
  39.  
  40.                 break; 
  41.             default
  42.                 break; 
  43.         } 
  44.     } 
  45.     path = (float) Math.sqrt((mBadgeRectF.left - circleLeft) * (mBadgeRectF.left - circleLeft) + (mBadgeRectF.top - circleTop) * (mBadgeRectF.top - circleTop)); 
  46.     isOverPath = path > overPath; 
  47.     float offSet = (float) (textBounds.top + textBounds.bottom) / 2; 
  48.     float boundsX = 0 ; 
  49.     if( 15 * length < (mBadgeRectF.right - mBadgeRectF.left)){ 
  50.        float temp =  mBadgeRectF.right - mBadgeRectF.left - 15 * length; 
  51.         boundsX = temp / 2; 
  52.     } 
  53.    float roundNum = 2 * radius / (mBadgeRectF.right - mBadgeRectF.left) ; 
  54.     canvas.drawRoundRect(mBadgeRectF,roundNum * radius ,roundNum * radius, mBadgePaint); 
  55.     canvas.drawText(mTextPain, mBadgeText, mBadgeRectF.left + boundsX, mBadgeRectF.top + radius - offSet); 

 2.生成拖拽事件

  1. @Override 
  2. public void onDragDown(Component component, DragInfo dragInfo) { 
  3.      pointX = dragInfo.downPoint.getPointX(); 
  4.      pointY = dragInfo.downPoint.getPointY(); 
  5.     if (pointX <= circleLeft || pointX >= circleLeft + 2 * radius + 15 * (length - 2) 
  6.             || pointY <= circleTop || pointY >= circleTop + 2 * radius) { 
  7.         onDragCancel(component, dragInfo); 
  8.     } 
  9.  
  10. @Override 
  11. public void onDragStart(Component component, DragInfo dragInfo) { 
  12. @Override 
  13. public void onDragUpdate(Component component, DragInfo dragInfo) { 
  14.  
  15.     float left = mBadgeRectF.left
  16.     float right = mBadgeRectF.right
  17.     float top = mBadgeRectF.top
  18.     float bottom = mBadgeRectF.bottom; 
  19.  
  20.     if (pointX <= circleLeft || pointX >= circleLeft + 2 * radius + 15 * (length - 2) 
  21.             || pointY <= circleTop || pointY >= circleTop + 2 * radius) { 
  22.         onDragCancel(component, dragInfo); 
  23.     } else { 
  24.         mBadgeRectF.left = (float) (left + dragInfo.xOffset); 
  25.         mBadgeRectF.right = (float) (right + dragInfo.xOffset); 
  26.         mBadgeRectF.top = (float) (top + dragInfo.yOffset); 
  27.         mBadgeRectF.bottom = (float) (bottom + dragInfo.yOffset); 
  28.         invalidate(); 
  29.     } 
  30.  
  31. @Override 
  32. public void onDragEnd(Component component, DragInfo dragInfo) { 
  33.     if (isOverPath) { 
  34.         explosionField.explode(component, mBadgeRectF, explosionFieldColor); 
  35.     } else { 
  36.         mBadgeRectF = new RectFloat(circleLeft, circleTop , circleLeft + 2 * radius + 15 * (length - 2), circleTop + 2 * radius); 
  37.         invalidate(); 
  38.     } 
  39. @Override 
  40. public void onDragCancel(Component component, DragInfo dragInfo) { 
  41.     mBadgeRectF = new RectFloat(circleLeft, circleTop , circleLeft + 2 * radius + 15 * (length - 2), circleTop + 2 * radius); 
  42.     invalidate(); 

 具體代碼請下載項目查看。

編譯HAR包

利用Gradle可以將HarmonyOS Library庫模塊構建為HAR包,構建HAR包的方法如下:

在Gradle構建任務中,雙擊PackageDebugHar或PackageReleaseHar任務,構建Debug類型或Release類型的HAR。

待構建任務完成后,可以在工程目錄中的VerificationCodeView> bulid > outputs > har目錄中,獲取生成的HAR包。

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

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

https://harmonyos.51cto.com

 

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

2021-02-04 09:45:19

鴻蒙HarmonyOS應用開發

2021-01-18 09:52:20

鴻蒙HarmonyOS開發

2021-06-28 14:48:03

鴻蒙HarmonyOS應用

2021-01-12 12:04:40

鴻蒙HarmonyOS應用開發

2021-01-20 09:54:56

鴻蒙HarmonyOS開發

2021-01-21 13:21:18

鴻蒙HarmonyOSPhotoview組件

2021-03-01 09:48:24

鴻蒙HarmonyOS應用開發

2021-02-24 15:22:47

鴻蒙HarmonyOS應用開發

2021-02-04 13:06:38

鴻蒙HarmonyOS應用開發

2021-04-16 09:28:18

鴻蒙HarmonyOS應用

2021-01-13 09:40:31

鴻蒙HarmonyOS開發

2021-01-22 17:33:03

鴻蒙HarmonyOS應用開發

2021-03-19 17:42:01

鴻蒙HarmonyOS應用開發

2021-04-20 09:42:20

鴻蒙HarmonyOS應用開發

2021-02-26 14:15:27

鴻蒙HarmonyOS應用開發

2021-03-01 14:01:41

鴻蒙HarmonyOS應用開發

2021-03-31 09:50:25

鴻蒙HarmonyOS應用開發

2021-04-12 09:36:54

鴻蒙HarmonyOS應用

2021-03-10 15:03:40

鴻蒙HarmonyOS應用

2021-08-02 14:54:50

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

91久热免费在线视频| 91精品国产综合久久精品| 欧美一区国产一区| 国产又大又长又粗| 亚洲无吗在线| 亚洲网站在线看| 欧美午夜视频网站| 久久久之久亚州精品露出| 美女伦理水蜜桃4| av在线日韩| 夜夜精品浪潮av一区二区三区| 久久久亚洲综合网站| 国产精品欧美激情在线| 免费精品视频| 欧美日本精品在线| av免费播放网站| 久久亚洲道色| 91精品国产色综合久久不卡蜜臀 | 岛国视频一区免费观看| 日韩黄色片网站| 亚洲精品在线二区| 欧美精品性视频| 你懂得视频在线观看| 欧美一级色片| 日韩欧美高清dvd碟片| 一级在线免费视频| 国产网站无遮挡| 高潮在线视频| 亚洲人成电影网站色mp4| 黑人巨大精品欧美一区二区小视频| 亚洲av无码乱码国产精品fc2| 欧美视频不卡| 久久亚洲一区二区三区四区五区高| 中文字幕狠狠干| 中文字幕日韩高清在线| 欧美久久久久久久久久| 五月婷婷狠狠操| 一区二区乱码| 亚洲成a人v欧美综合天堂| 成人免费看片视频在线观看| 国产特黄在线| 91美女蜜桃在线| 亚洲人精品午夜| 欧美一区二区三区成人久久片| 丰满肉肉bbwwbbww| 国产精品小仙女| 国产精品三级在线| 精品少妇theporn| 午夜久久美女| 久久99久国产精品黄毛片入口| a级黄色免费视频| 精品九九在线| 伊人伊成久久人综合网小说| 久久精品一区二区免费播放| 女人抽搐喷水高潮国产精品| 亚洲а∨天堂久久精品喷水| www.黄色网| 日韩av自拍偷拍| 久久精品国产亚洲a∨麻豆| av福利精品导航| 国产一区精品视频| 色窝窝无码一区二区三区成人网站| 国产成人精品免费在线| 成人免费看片网站| 人妻无码中文字幕免费视频蜜桃| 成人自拍视频在线| 国内精品视频在线播放| 日本又骚又刺激的视频在线观看| 久久免费视频色| 日韩一二三区不卡在线视频| 成a人片在线观看www视频| 国产精品国产成人国产三级| 艳母动漫在线观看| 日日夜夜天天综合入口| 亚洲成人精品在线观看| 每日在线更新av| 51一区二区三区| 4438成人网| youjizz.com国产| 妖精一区二区三区精品视频 | 国产日韩亚洲| 欧美在线视频不卡| 亚洲v日韩v综合v精品v| 性网爆门事件集合av| a美女胸又www黄视频久久| 久久综合久久久| 一广人看www在线观看免费视频| 综合电影一区二区三区 | 性色一区二区三区| 国产精品视频999| 精品人妻av一区二区三区| 成人深夜在线观看| 日韩av电影免费在线| 精品黄色免费中文电影在线播放| 一二三区精品视频| 中文字幕无码不卡免费视频| 综合久久伊人| 亚洲精品第一国产综合精品| 日韩av片在线免费观看| 亚洲手机在线| 国产精品视频1区| 日本高清视频免费观看| 中文字幕成人av| 国产乱子伦精品无码专区| 成人黄色免费短视频| 日韩欧美中文字幕精品| 色欲av无码一区二区三区| 亚洲国产精品日韩专区av有中文| 91av视频在线| 国产又黄又粗又长| 久久久精品黄色| 免费人成自慰网站| 精品美女一区| 亚洲美女av网站| 激情四射综合网| 麻豆国产精品官网| 欧美久久在线| 黄网站在线观| 7777精品伊人久久久大香线蕉的 | 成人免费在线观看视频网站| 嗯用力啊快一点好舒服小柔久久| 色偷偷综合社区| 亚洲免费黄色网址| 国产丶欧美丶日本不卡视频| 亚洲开发第一视频在线播放| 亚洲一二三四| 亚洲国产女人aaa毛片在线| 成年人网站大全| 国产在线观看免费视频今夜| 国产欧美午夜| 国产高清精品一区二区三区| 国产乱色在线观看| 欧美唯美清纯偷拍| 亚洲av综合一区二区| 亚洲激情二区| av一本久道久久波多野结衣| 麻豆视频在线免费观看| 欧美日韩一卡二卡| av电影在线不卡| 亚洲永久在线| 精品欧美一区二区精品久久| 成人免费一区二区三区牛牛| 日韩欧美精品在线视频| 欧美三级黄色大片| 精品一区二区影视| 在线视频不卡一区二区| 成人一区视频| 色妞欧美日韩在线| 一本到在线视频| ㊣最新国产の精品bt伙计久久| 在线免费观看视频黄| 久久av影视| 国产成人欧美在线观看| 国产在线观看黄| 欧美写真视频网站| 自拍偷拍你懂的| 精品中文av资源站在线观看| 中文字幕中文字幕一区三区| 电影91久久久| 色中色综合影院手机版在线观看| www.久久综合| 天天操天天色综合| 在线免费观看麻豆| 日本欧美加勒比视频| 亚洲一区二区在线免费观看| 四虎影视国产精品| 欧美巨大黑人极品精男| 欧美 日韩 国产 在线| 亚洲综合成人在线视频| 久久久久麻豆v国产精华液好用吗| 国产日韩免费| 日韩av电影免费在线观看| 欧美网站免费| 欧美俄罗斯性视频| 天堂91在线| 欧美亚洲综合另类| 美女的奶胸大爽爽大片| 高潮精品一区videoshd| 五十路熟女丰满大屁股 | 中文字幕av资源一区| 精品久久久噜噜噜噜久久图片| 成人羞羞网站入口免费| 91日本在线观看| av不卡高清| 一本色道久久88综合日韩精品| 亚洲中文字幕一区二区| 亚洲在线观看免费| 国产成人av一区二区三区不卡| 美国欧美日韩国产在线播放| www.一区二区.com| 久操精品在线| 亚洲xxxx在线| 欧美大片免费| 欧美成人黑人xx视频免费观看| 无码国产色欲xxxx视频| 欧美色爱综合网| 日韩av女优在线观看| 中文欧美字幕免费| 小毛片在线观看| 麻豆91在线看| 欧美牲交a欧美牲交| 99久久婷婷国产综合精品电影√| 国产视频精品网| 日韩毛片免费看| 91超碰caoporn97人人| 成年视频在线观看| 国产亚洲精品美女久久久| 亚洲AV无码国产精品午夜字幕 | 欧美日韩破处| 91九色单男在线观看| 制服丝袜专区在线| 欧美另类高清videos| 成年在线电影| 日韩精品免费在线视频观看| 国产福利第一视频| 欧美揉bbbbb揉bbbbb| 午夜精品三级久久久有码| 亚洲欧洲综合另类| 国产毛片欧美毛片久久久| 成人国产精品免费观看动漫| 天堂中文av在线| 热久久免费视频| 97在线播放视频| 亚洲久久一区二区| 17c丨国产丨精品视频| 日韩精品一区二区三区免费观看| 久久99九九| 国产成人一二| wwwxx欧美| 日本99精品| 亚洲a一级视频| 四虎精品在线观看| 欧美三区在线视频| 久久综合在线观看| 日本在线观看不卡视频| 国产 福利 在线| 99综合精品| 国产 日韩 欧美在线| 午夜激情一区| 在线观看三级网站| 亚洲电影影音先锋| 日韩最新中文字幕| 久久久久久久久久久妇女| 亚洲一区二区三区色| 久久一区91| 亚洲一区二区四区| 99成人超碰| 视频一区二区视频| 亚洲激情五月| 成人免费a级片| 激情文学一区| 国产精品专区在线| 在线午夜精品| 色诱视频在线观看| 蜜臀va亚洲va欧美va天堂| 色婷婷狠狠18| 久久国内精品自在自线400部| 污视频网址在线观看| 激情图片小说一区| 亚洲综合在线一区二区| 国产精品亚洲成人| 中文字幕永久免费| 91在线视频18| 中文字幕网站在线观看| 国产精品美女视频| 欧美黑人性猛交xxx| 一个色综合网站| 在线视频一区二区三区四区| 色久优优欧美色久优优| 91av国产精品| 日韩精品一区二区三区蜜臀| 日本免费不卡视频| 亚洲精品一区中文字幕乱码| 成人一区二区不卡免费| 久久精品国产视频| 国产美女福利在线观看| 奇米一区二区三区四区久久| 国产三级一区| 高清视频一区| 国产精品羞羞答答在线观看| 一区二区三区四区五区视频 | 青青草精品视频在线| 久久av一区| 国产三级精品三级在线| 成人av网址在线| 最新中文字幕av| 亚洲精品高清在线| 天天干天天干天天| 欧美福利视频导航| 亚洲av毛片成人精品| 在线中文字幕日韩| 大桥未久在线播放| 国产精品流白浆视频| 特黄视频在线观看| 成人免费在线视频观看| 亚洲国产123| 岛国av在线不卡| 99久久久无码国产精品免费| 日韩理论片久久| 国产素人视频在线观看| 人人爽久久涩噜噜噜网站| 免费精品一区| 日本在线观看一区二区| 欧美日本免费| 欧美伦理片在线观看| www.av精品| 午夜剧场免费在线观看| 日韩欧美成人免费视频| 国产成人精品av在线观| 亚洲精品在线不卡| 欧美巨大xxxx做受沙滩| 国产精品一区二区久久国产| 久久婷婷国产| 男人天堂新网址| 理论电影国产精品| 人妻熟女aⅴ一区二区三区汇编| 亚洲蜜臀av乱码久久精品 | 日韩一区二区三区在线| 免费av在线电影| 久久久影视精品| 精品国产亚洲一区二区三区大结局 | 国产高清av在线播放| 久久av资源网| 极品人妻videosss人妻| 色诱亚洲精品久久久久久| 黄色美女一级片| 久热精品视频在线观看| www.久久.com| 日本在线免费观看一区| 欧美在线综合| 色婷婷精品久久二区二区密 | 69视频免费在线观看| 精品久久久久久久人人人人传媒| 里番在线观看网站| 国产精品视频大全| 精品国产1区| 日本xxxxxxx免费视频| 91免费看`日韩一区二区| 国产极品美女高潮无套嗷嗷叫酒店| 欧美一三区三区四区免费在线看 | 亚洲欧美日韩精品久久久久| 国产精品成人久久久| 亚洲人成77777在线观看网| 日本黄色免费在线| 久精品国产欧美| 亚洲永久视频| 在线免费观看麻豆| 在线精品视频小说1| a黄色在线观看| 国产精品主播视频| 久久国产成人午夜av影院宅| 在线观看av网页| 中文字幕中文字幕在线一区| av av在线| 99国产精品私拍| ass极品水嫩小美女ass| 一级女性全黄久久生活片免费| 黄色av网址在线| 97在线看免费观看视频在线观看| 欧美亚洲色图校园春色| 日韩毛片在线免费看| 国产清纯在线一区二区www| 中文字幕在线2019| 久久精品视频一| 91精品导航| 毛片在线视频播放| 久久九九影视网| 亚洲综合精品在线| 欧美成人三级视频网站| 国产精品任我爽爆在线播放| 欧美视频在线播放一区| 欧美极品另类videosde| 国产乱码久久久| 九九热精品视频| 日韩极品在线| 国产wwwxx| 一区二区三区在线视频观看58| 天堂中文网在线| 国产精品极品尤物在线观看| 91精品国产91久久久久久黑人| 一本色道久久hezyo无码| 日本久久精品电影| 高h视频在线观看| 精品免费视频123区| 蜜桃精品在线观看| 久草资源在线视频| 亚洲视频在线视频| 欧美影院在线| 日本黄色三级大片| 亚洲人妖av一区二区| 天天操天天干天天| 国产精品稀缺呦系列在线 | 国产乱子夫妻xx黑人xyx真爽| 欧美国产成人精品| 动漫av一区二区三区| 国产精品美女网站| 亚洲激情成人| 国产黄色小视频网站| 精品视频中文字幕| 欧美影院精品|