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

鴻蒙開源第三方組件——crop_image_layout_ohos

開源
crop_image_layout_ohos組件能對圖片進行旋轉和自定義裁切的操作,并且無論待裁切圖片原尺寸有多大或多小,最終都將在以最佳尺寸在組件內顯示。

[[432849]]

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

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

https://harmonyos.51cto.com

前言

基于安卓平臺的圖片裁切組件crop_image_layout(https://github.com/yulu/crop-image-layout ),實現(xiàn)了鴻蒙化遷移和重構,代碼已經開源到(https://gitee.com/isrc_ohos/crop_image_layout_ohos ),目前已經獲得了很多人的Star和Fork ,歡迎各位下載使用并提出寶貴意見!

背景

crop_image_layout_ohos組件能對圖片進行旋轉和自定義裁切的操作,并且無論待裁切圖片原尺寸有多大或多小,最終都將在以最佳尺寸在組件內顯示。同時,該組件操作界面簡潔且使用方法簡單,易被開發(fā)者使用或優(yōu)化,能夠提升應用的豐富性和可操作性。

組件效果展示

組件中可以通過操作圖片、裁切框、按鈕,最終實現(xiàn)在圖片中裁切部分區(qū)域并進行顯示的效果,組件的運行效果如圖1所示。

 #星光計劃1.0# 鴻蒙開源第三方組件——crop_image_layout_ohos-鴻蒙HarmonyOS技術社區(qū)

圖1 crop_image_layout_ohos組件的運行效果圖

對應運行效果圖,詳細解釋其主要提供的功能:

  • 點擊“rotate”按鈕可以對圖片進行旋轉操作。
  • 手指按住裁切框內任意處并拖動,可實現(xiàn)裁切框移動,裁切框停止移動時,框內的圖片即為想要裁切的圖片;
  • 被選中區(qū)域的左上角和右下角坐標會在圖片下方的文本框中進行顯示;
  • 點擊“crop”按鈕可對選中的圖片區(qū)域進行裁切,之后會跳轉到第二個界面顯示裁切后的圖片;

Sample解析

1.組件的整體使用流程

圖2 組件使用流程示意圖

在介紹組件的使用前,先來介紹下構成crop_image_layout_ohos組件功能的3個重要部分:

-裁切框:負責劃定圖片的裁切區(qū)域;

-裁切圖片:是指被導入組件中,即將被裁切的圖片;

-組件區(qū)域:是指組件所在的位置;

組件的使用過程可以概括為首先設置裁切框的位置(坐標),然后將裁切框坐標數(shù)據添加到裁切圖片中,最后將裁切框和裁切圖片添加到組件區(qū)域中。

在這過程中,組件還實現(xiàn)了對裁切圖片和裁切框尺寸的適配顯示效果,這部分的具體原理會在Library解析部分進行講解。

2.組件的具體使用步驟

下面介紹crop_image_layout_ohos組件的具體使用方法,共分為6個步驟:

步驟1. 在xml文件中添加EditPhotoView控件。

步驟2. 導入所需類并實例化類對象。

步驟3. 將裁切框坐標數(shù)據設置到裁切圖片。

步驟4. 將裁切圖片和裁切框添加到布局中

步驟5. 顯示裁切框左上角和右下角坐標值。

步驟6. 設置監(jiān)聽事件。

(1)在xml文件中添加EditPhotoView控件

在xml文件中以com.huawei.croplayout.EditPhotoView為控件名添加EditPhotoView控件,用來顯示crop_image_layout_ohos的組件區(qū)域。并分別設置裁切框拐角和邊的顏色以及裁切圖片未被選中部分的陰影顏色,如圖所示。

圖3 屬性設置示意圖

  1. <com.huawei.croplayout.EditPhotoView//添加組件區(qū)域 
  2.     ohos:id="$+id:editable_image" 
  3.     ... 
  4.     crop:crop_corner_color="#45B4CA"//裁切框拐角顏色 
  5.     crop:crop_line_color="#d7af55"   //裁切框邊顏色 
  6.     crop:crop_shadow_color="#77ffffff"/>  //裁切圖片未被選中部分的陰影顏色 

(2)導入所需類并實例化類對象

在MainAbilitySlice類的onStart()方法中,分別導入類onBoxChangedListeneron、EditPhotoView、EdittableImage、ScalableBox。

  • BoxChangedListener類用于監(jiān)聽裁切框變化;
  • EditPhotoView類用于設置組件區(qū)域;
  • EdittableImage類用于設置裁切圖片;
  • ScalableBox類用于設置裁切框;
  1. import com.example.croplayout.handler.OnBoxChangedListener;//裁切框變化監(jiān)聽 
  2. import com.example.croplayout.EditPhotoView;//組件區(qū)域 
  3. import com.example.croplayout.EditableImage;//裁切圖片 
  4. import com.example.croplayout.model.ScalableBox;//裁切框 

創(chuàng)建EditPhotoView類和Text類對象分別用于綁定crop_image_layout_ohos的組件區(qū)域和用于顯示裁切框坐標的文本控件;實例化EdittableImage類對象image,使其包含圖1所示的裁切圖片,實現(xiàn)組件裁切圖片的導入。創(chuàng)建一個元素類型為ScalableBox的List,并將其命名為boxes,用于盛納裁切框的坐標。新實例化一個左上角坐標為(25,180)、右下角坐標為(640,880)的裁切框對象,并調用add()方法將其添加到上述boxes中。

  1. //用于綁定組件的裁切圖片視圖區(qū)域 
  2. final EditPhotoView imageView = (EditPhotoView) findComponentById(ResourceTable.Id_editable_image); 
  3. final Text boxText = (Text) findComponentById(ResourceTable.Id_box_text); 
  4. final EditableImage image = new EditableImage(this, ResourceTable.Media_photo2); 
  5. List<ScalableBox> boxes = new ArrayList<>();//用于設置裁切框的坐標 
  6. boxes.add(new ScalableBox(25, 180, 640, 880));//裁切框的坐標 

(3)將裁切框坐標數(shù)據設置到裁切圖片

通過setBoxes()方法將boxes中裁切框對象的坐標數(shù)據設置到裁切圖片image中,實現(xiàn)裁切框相對裁切圖片的位置設定;

  1. image.setBoxes(boxes);  

(4)將裁切圖片和裁切框添加到布局中

調用intView()方法,創(chuàng)建裁切圖片和裁切框的視圖,并將其添加到組件布局中進行顯示。

  1. imageView.initView(this, image);  

(5)顯示裁切框左上角和右下角坐標值

重新聲明一個ScalableBox類型的對象activeBox,用于動態(tài)取裁切框的坐標,并將其通過Text在界面上顯示出來。

  1. ScalableBox activeBox = image.getActiveBox();//動態(tài)獲取圖片中裁切框選取區(qū)域的坐標 
  2. boxText.setText("box: [" + activeBox.getX1() + "," + activeBox.getY1() + 
  3.         "],[" + activeBox.getX2() + "," + activeBox.getY2() + "]"); 

(6)設置監(jiān)聽事件

組件區(qū)域監(jiān)聽事件

為組件區(qū)域對象imageView設置監(jiān)聽事件,當裁切框位置發(fā)生變化時,將其坐標設置到Text對象boxText中進行顯示。

  1. imageView.setOnBoxChangedListener(new OnBoxChangedListener() { 
  2.     @Override//設置裁切框區(qū)域監(jiān)聽事件 
  3.     public void onChanged(int x1, int y1, int x2, int y2) { 
  4.         boxText.setText("box: [" + x1 + "," + y1 + "],[" + x2 + "," + y2 + "]"); 
  5.     } 
  6. }); 

旋轉按鈕“rotate”監(jiān)聽事件

聲明一個Button類對象rotateButton將其與“rotate_button”控件綁定。為其設置點擊監(jiān)聽事件,按鈕被點擊時,通過組件區(qū)域對象imageView調用rotateImageView()方法實現(xiàn)裁切圖片向右旋轉90°的效果。

  1. Button rotateButton = (Button) findComponentById(ResourceTable.Id_rotate_button);//與”rorate_button“控件綁定 
  2. rotateButton.setClickedListener(new Component.ClickedListener() { 
  3.     @Override//設置點擊監(jiān)聽事件 
  4.     public void onClick(Component component) { 
  5.         imageView.rotateImageView();//實現(xiàn)裁切圖片向右旋轉90° 
  6.     } 
  7. }); 

 裁切按鈕“crop”監(jiān)聽事件

聲明一個Button類對象cropButton將其與“crop_button”控件綁定,并設置點擊監(jiān)聽事件。按鈕被點擊時,通過裁切圖片image調用cropOriginalImage()方法得到裁切后的圖片并將其存放于PixelMap類對象中;通過Intent跳轉到第二個界面,并將裁切后的圖片作為參數(shù)傳入,顯示在第二個界面中。

  1. Button cropButton = (Button) findComponentById(ResourceTable.Id_crop_button); 
  2. cropButton.setClickedListener(new Component.ClickedListener() { 
  3.     @Override//設置點擊監(jiān)聽事件 
  4.     public void onClick(Component component) { 
  5.         PixelMap croppedImage = image.cropOriginalImage(); 
  6.         Intent newIntent = new Intent(); 
  7.         newIntent.setParam("image", croppedImage); 
  8.         present(new SecondAbilitySlice(), newIntent); 
  9.     } 
  10. }); 

Library解析

  • Library部分將圍繞圖2,對crop_image_layout_ohos組件的原理和執(zhí)行邏輯進行梳理。其中會涉及到ScalableBox類、EdittableImage類、EditPhotoView類、SelectionView類、和ImageHelper類;
  • ScalableBox類、EdittableImage類、EditPhotoView類在上一節(jié)中簡單介紹過是用來設置組件區(qū)域、裁切圖片和裁切框的;
  • SelectionView類用于用于設置裁剪框所在的視圖;
  • ImageHelper類相當于一個圖片操作輔助工具,用來完成從原裁剪圖片中獲取PixelMap和旋轉圖片等圖片處理操作。

1.設置裁切框(實例化其尺寸)

 #星光計劃1.0# 鴻蒙開源第三方組件——crop_image_layout_ohos-鴻蒙HarmonyOS技術社區(qū)

圖4 裁切框坐標示意圖

在Sample解析中我們講過,需要調用add()方法將新實例化的左上角坐標為(25,180)、右下角坐標為(640,880)的裁切框加入到boxes對象中。其中,左上角坐標對應圖4中的(X1,Y1),右上角對應圖4中的(X2,Y2),通過設置裁切框對角線上兩個點,就可以唯一確定其大小和位置了。

  1. boxes.add(new ScalableBox(25, 180, 640, 880)); 

實例化過程需要通過ScalableBox類的構造函數(shù),設置裁切框左上角和右下角的坐標。

  1. public ScalableBox(int x1, int y1, int x2, int y2) { 
  2.     this.x1 = x1; 
  3.     this.y1 = y1; 
  4.     this.x2 = x2; 
  5.     this.y2 = y2; 

2.將裁切框坐標數(shù)據設置到裁切圖片

獲取裁切框列表boxes的第一個對象,即我們之前設置好對角線坐標的裁切框數(shù)據,并將其添加到裁切圖片中。這是通過EditableImage類的setBoxes()方法實現(xiàn)的。

在該方法中,若裁切框對象列表boxes不為空且尺寸大于0,則將boxes賦給EditableImage類的成員變量originalBoxes,用于存儲所有的裁剪框對象的數(shù)據;將另一個此類的成員變量copyofActiveBox實例化,用于存儲被選中的裁剪框兩個角的坐標值;其中,activeBoxIdx是指在boxes中盛納裁切框坐標的下標,List可以為用戶預留多個裁切框坐標,本組件中只是用下表為0的裁切框坐標。

  1. public void setBoxes(List<ScalableBox> boxes, int activeBoxIdx) { 
  2.     if (boxes != null && boxes.size() > 0) {//如果boxes對象不為空且尺寸大于0 
  3.         this.originalBoxes = boxes; 
  4.         copyOfActiveBox = new ScalableBox(); 
  5.        copyOfActiveBox.setX1(originalBoxes.get(activeBoxIdx).getX1()); 
  6.        copyOfActiveBox.setX2(originalBoxes.get(activeBoxIdx).getX2()); 
  7.        copyOfActiveBox.setY1(originalBoxes.get(activeBoxIdx).getY1()); 
  8.        copyOfActiveBox.setY2(originalBoxes.get(activeBoxIdx).getY2()); 
  9.     } 

3.將裁切圖片和裁剪框添加到布局中

該功能是通過EditPhotoView類的initView()方法實現(xiàn)的。先根據創(chuàng)建EditPhotoView對象時傳入的裁切框尺寸、邊角尺寸和顏色等屬性,將SelectionView類實例化,用于展示裁剪框的視圖;然后根據傳入的裁切圖片實例化得到Image圖片類對象,用于展示裁切圖片的視圖;再將SelectionView類對象和Image對象的布局設置為跟隨父組件,并將兩者添加到裁切組件區(qū)域布局中,實現(xiàn)裁切框和裁切圖片的顯示。

分別通過setViewSize()方法設置裁切圖片視圖區(qū)域尺寸、setPixelMap()為其設置裁切圖片位圖格式、setScaleMode()方法為其設置圖片縮放模式為中心縮放、setBoxSize()方法設置裁切圖片和裁切框適配后的尺寸。

  1. public void initView(Context context, EditableImage editableImage) { 
  2.     this.editableImage = editableImage; 
  3.     selectionView = new SelectionView(context, 
  4.             lineWidth, cornerWidth, cornerLength, 
  5.             lineColor, cornerColor, dotColor, shadowColor, editableImage); 
  6.     imageView = new Image(context);//設置選擇區(qū)域尺寸、邊角尺寸以及顏色 
  7.     imageView.setLayoutConfig(new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT));//跟隨父組件 
  8.     selectionView.setLayoutConfig(new LayoutConfig(LayoutConfig.MATCH_PARENT, LayoutConfig.MATCH_PARENT)); 
  9.     addComponent(imageView, 0);//將裁切框區(qū)域和選擇區(qū)域添加到布局中 
  10.     addComponent(selectionView, 1); 
  11.  
  12.     if (editableImage != null) { 
  13.         editableImage.setViewSize(mWidth, mHeight); 
  14.         imageView.setPixelMap(editableImage.getOriginalPixelMap()); 
  15.         imageView.setScaleMode(Image.ScaleMode.ZOOM_CENTER);//中心縮放模式 
  16.         selectionView.setBoxSize(editableImage, editableImage.getBoxes(), mWidth, mHeight); 
  17.     } 

(1)在裁切圖片視圖區(qū)域中適配裁切圖片

由于裁切圖片的視圖區(qū)域與組件區(qū)域的大小相同,二裁切圖片的大小是不固定的,因此裁切圖片在顯示到其視圖區(qū)域時,需進行尺寸的適配。

上述功能是由EditableImage類的getFitSize()方法提供,該方法在上述setBoxSize()方法中被調用。通過該方法能夠將裁切圖片與其視圖區(qū)域進行適配,同時返回適配后圖片尺寸。這是為了更好地在裁切圖片視圖區(qū)域中展示圖片,無論過大或過小尺寸的圖片都能在此區(qū)域中被縮放至最合適的程度顯示。原理可參考圖5。

圖5 適配圖片尺寸原理圖(左:ratio>viewRatio,右反之)

先計算原裁切圖片(即粉色矩形)寬和高的比值ratio(即a/b)和組件區(qū)域(即黃色矩形)寬和高的比值viewRatio(即c/d)。

判斷若原裁切圖片寬高比大于裁切圖片視圖區(qū)域寬高比即圖5中左圖的情況,則說明可以將原裁切圖片最大程度放大至寬a與裁切圖片視圖區(qū)域寬c長度一致的尺寸(即藍色矩形),此時原裁切圖片高b按ratio放大后的長度一定小于裁切圖片視圖區(qū)域高d,因此可以根據圖片寬放大的倍數(shù)factor求出放大后高的長度。

若原裁切圖片寬高比小于裁切圖片視圖區(qū)域寬高比即圖5中右圖的情況,與上一種情況同理,則說明可以將原裁切圖片最大程度放大至高b與裁切圖片視圖區(qū)域高d長度一致的尺寸(即藍色矩形),此時原裁切圖片寬a按ratio放大后的長度一定小于裁切圖片視圖區(qū)域寬c,因此可以根據圖片高放大的倍數(shù)factor求出放大后寬的長度。

計算完成后將圖片放大后的寬和高分別存放在int型數(shù)組fitSize[]中。上述是以原裁切圖片尺寸小于裁切圖片視圖區(qū)域為例,反之同理。

  1. public int[] getFitSize() {//適配圖片,將圖片縮放至比例與裁切圖片視圖區(qū)域比例一致 
  2.     int[] fitSize = new int[2];//用于存放適配后的圖片寬高 
  3.     //原裁剪圖片寬高比 
  4.     float ratio = originalPixelMap.getImageInfo().size.width / (float) originalPixelMap.getImageInfo().size.height; 
  5.     float viewRatio = viewWidth / (float) viewHeight;//裁切圖片視圖區(qū)域寬高比 
  6.  
  7.     //原裁剪圖片寬和高比例大于裁切圖片視圖區(qū)域寬和高比例 
  8.     if (ratio > viewRatio) { 
  9.         float factor = viewWidth / (float) originalPixelMap.getImageInfo().size.width;//裁切圖片寬放大的倍數(shù) 
  10.         fitSize[0] = viewWidth;//寬為裁切圖片視圖區(qū)域寬 
  11.         fitSize[1] = (int) (originalPixelMap.getImageInfo().size.height * factor);//根據寬放大的倍數(shù)計算放大后高的長度 
  12.     } else { //原裁剪圖片寬和高比例小于裁切圖片視圖區(qū)域寬和高比例 
  13.         float factor = viewHeight / (float) originalPixelMap.getImageInfo().size.height; 
  14.         fitSize[0] = (int) (originalPixelMap.getImageInfo().size.width * factor); 
  15.         fitSize[1] = viewHeight; 
  16.     } 
  17.     return fitSize; 

(2)將裁切框和圖片進行適配

裁切框需要與裁切圖片保持相同的顯示比例,因此裁切框需要和裁切圖片進行適配。

上述功能是由SelectionView類的setBoxsize()方法。獲取適配后圖片的寬高,與裁切框寬高進行計算得到originX和originY,并調用setDisplayBoxes()方法設置適配后裁切框的坐標。

  1. public void setBoxSize(EditableImage editableImage, List<ScalableBox> originalBoxes, int widthX, int heightY) { 
  2.     int[] fitSize = editableImage.getFitSize();//獲取前面計算地適配后的圖片尺寸 
  3.     this.pixelMapWidth = fitSize[0];//適配后圖片的寬 
  4.     this.pixelMapHeight = fitSize[1];//適配后圖片地高 
  5.     int originX = (widthX - pixelMapWidth) / 2; 
  6.     int originY = (heightY - pixelMapHeight) / 2; 
  7.     this.originX = originX; 
  8.     this.originY = originY; 
  9.     setDisplayBoxes(originalBoxes);//設置適配后裁切框的坐標 
  10.     invalidate(); 

setDisplayBoxes()方法中核心部分是根據圖片縮放比例計算適配后裁切框對角線上兩點的坐標。先計算圖片縮放前后寬的比值scale(即c/a),用之前實例化時設置的裁切框初始尺寸的左上角橫坐標X1與縮放比例scale相乘得到適配后的橫坐標,再加上前面計算好的originX,即得到適配后的裁切框左上角橫坐標scaleX1,右下角橫坐標scaleX2、左上角豎坐標scaleY1、右下角豎坐標scaleY2同理。

  1. float scale = ((float) editableImage.getFitSize()[0]) / editableImage.getActualSize()[0]; 
  2. int scaleX1 = (int) Math.ceil((originalBox.getX1() * scale) + originX); 
  3. int scaleX2 = (int) Math.ceil((originalBox.getX2() * scale) + originX); 
  4. int scaleY1 = (int) Math.ceil((originalBox.getY1() * scale) + originY); 
  5. int scaleY2 = (int) Math.ceil((originalBox.getY2() * scale) + originY); 
  6.  
  7. //將適配后的裁切框重新加入到裁切圖片中 
  8. displayBox.setX1(scaleX1); 
  9. displayBox.setX2(scaleX2); 
  10. displayBox.setY1(scaleY1); 
  11. displayBox.setY2(scaleY2); 

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

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

https://harmonyos.51cto.com

 

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

2021-04-20 15:06:42

鴻蒙HarmonyOS應用

2021-08-30 17:55:58

鴻蒙HarmonyOS應用

2021-04-08 14:57:52

鴻蒙HarmonyOS應用

2021-07-06 18:21:31

鴻蒙HarmonyOS應用

2021-11-17 15:37:43

鴻蒙HarmonyOS應用

2021-07-20 15:20:40

鴻蒙HarmonyOS應用

2021-04-15 17:47:38

鴻蒙HarmonyOS應用

2021-10-19 10:04:51

鴻蒙HarmonyOS應用

2021-08-10 15:23:08

鴻蒙HarmonyOS應用

2021-06-29 09:28:16

鴻蒙HarmonyOS應用

2021-06-17 14:56:00

鴻蒙HarmonyOS應用

2021-03-10 15:03:40

鴻蒙HarmonyOS應用

2021-04-29 14:32:24

鴻蒙HarmonyOS應用

2021-03-24 09:30:49

鴻蒙HarmonyOS應用

2021-08-26 16:07:46

鴻蒙HarmonyOS應用

2021-08-03 10:07:41

鴻蒙HarmonyOS應用

2021-07-28 09:40:04

鴻蒙HarmonyOS應用

2021-03-01 14:00:11

鴻蒙HarmonyOS應用

2021-03-03 09:42:26

鴻蒙HarmonyOS圖片裁剪

2021-03-26 16:10:18

鴻蒙HarmonyOS應用
點贊
收藏

51CTO技術棧公眾號

亚洲精品动漫100p| 色综合天天综合网天天狠天天| 91日本在线观看| 国产一级特黄视频| 国产影视精品一区二区三区| 欧美日韩电影一区| 国产真人做爰毛片视频直播| 国产黄在线看| 国产成人精品免费网站| 日本精品性网站在线观看| 三级黄色片在线观看| 伊人久久影院| 欧美性生活久久| 国产欧美日韩小视频| 国产鲁鲁视频在线观看免费| 国产风韵犹存在线视精品| 国产999在线观看| 久久久久亚洲av成人片| 成人羞羞网站入口免费| 亚洲第一区中文99精品| 亚洲精品20p| 自拍偷拍欧美视频| 亚洲午夜精品17c| 中文字幕成人一区| 黄色国产在线| av一本久道久久综合久久鬼色| 国产精品视频免费观看www| 激情五月色婷婷| 亚洲综合激情在线| 中文字幕国产亚洲| 免费看污片网站| 任我爽精品视频在线播放| 欧美一区二区三区影视| 视色视频在线观看| 中文在线免费视频| 午夜精品免费在线| 91成人在线视频观看| 超碰在线影院| 国产色爱av资源综合区| 玛丽玛丽电影原版免费观看1977 | 五级黄高潮片90分钟视频| 曰本一区二区| 欧美日韩黄色一区二区| 欧美日韩在线免费播放| 国产污视频在线播放| 亚洲一区二区三区激情| gogogo免费高清日本写真| av中文字幕在线| 久久精品一二三| 蜜桃欧美视频| 欧美欧美欧美| 久久人人超碰精品| 免费久久久一本精品久久区| 婷婷国产在线| 久久综合色婷婷| 蜜桃麻豆91| 搞黄视频在线观看| 国产精品久线观看视频| 在线精品亚洲一区二区| 麻豆系列在线观看| 中文字幕字幕中文在线中不卡视频| 日韩精品资源| 日本中文字幕在线播放| 亚洲欧洲精品一区二区精品久久久| 五月天亚洲综合| 色的视频在线免费看| 亚洲欧洲三级电影| 六月婷婷激情综合| 性国裸体高清亚洲| 欧美亚洲动漫精品| 三日本三级少妇三级99| 在线综合色站| 国产丝袜一区二区三区免费视频| 国产精品无码久久久久一区二区| 狠狠操综合网| 久久中文字幕国产| 精品视频一区二区在线观看| 国产亚洲福利| 国产精品亚洲综合天堂夜夜| 国产视频第一页| 国产超碰在线一区| 欧美国产一二三区| av在线三区| 伊人夜夜躁av伊人久久| 色综合久久久久无码专区| 日韩久久一区二区三区| 在线91免费看| 日韩网站在线播放| 日本不卡二三区| 欧美激情图片区| 免费av网站在线| 蜜乳av一区二区| 国产伦精品一区二区三区高清版| 免费资源在线观看| 亚洲三级在线看| 777久久久精品一区二区三区| 成人黄色免费观看| 精品国内片67194| 成年人在线免费看片| 午夜久久tv| 国产精品久久久久9999| 国产www免费观看| 久久久久88色偷偷免费| 99亚洲国产精品| 无人区在线高清完整免费版 一区二| 91精品国模一区二区三区| 丰满少妇一区二区三区| 女主播福利一区| 国产www精品| 蜜臀av午夜精品| 中文字幕亚洲不卡| av无码精品一区二区三区| 亚洲精品在线播放| 最新91在线视频| 日日噜噜噜噜人人爽亚洲精品| 国产一区二区按摩在线观看| 欧美在线播放一区| 都市激情国产精品| 欧美一级淫片007| 99在线视频免费| 99在线观看免费视频精品观看| 成人网页在线免费观看| 免费在线国产| 岛国av在线不卡| 久久久男人的天堂| 亚洲国产成人精品女人| 国产精品自拍网| 黑人与亚洲人色ⅹvideos| 亚洲超丰满肉感bbw| 超级砰砰砰97免费观看最新一期| 国内亚洲精品| 国产成人高潮免费观看精品| 婷婷五月综合激情| 一区二区三区欧美在线观看| 日本美女视频一区| 成人情趣视频网站| 国产极品精品在线观看| 男人的天堂在线免费视频| 亚洲成av人片在线观看无码| 被黑人猛躁10次高潮视频| 久久亚洲国产| 国产精品永久免费观看| 888av在线| 欧美日韩亚洲高清一区二区| 国产肥白大熟妇bbbb视频| 亚洲一区二区动漫| 免费av在线一区二区| 伊人网在线播放| 国产视频精品xxxx| 秋霞av一区二区三区| 91老司机福利 在线| 日日鲁鲁鲁夜夜爽爽狠狠视频97| 欧美精品中文| 国产91精品最新在线播放| 欧美精品a∨在线观看不卡 | 欧美激情一区二区三区在线视频观看| 99久久久国产精品无码网爆| 亚洲黄色免费网站| 年下总裁被打光屁股sp | 国产尤物久久久| 国产精品高精视频免费| 992tv免费直播在线观看| 欧美日韩高清一区二区不卡 | 高清性色生活片在线观看| 在线一区二区三区四区五区| 手机看片福利视频| 精品写真视频在线观看| 国产欧美123| 日韩精品免费一区二区夜夜嗨| 欧美亚洲第一页| 黄色片在线免费观看| 欧美精品一二三区| 国产一级视频在线| 久久久噜噜噜久噜久久综合| 91视频免费版污| 91精品综合| 国产精品久久久久久久免费大片 | 国产拍精品一二三| av理论在线观看| 亚洲高清在线观看| 97人妻一区二区精品视频| 国产精品高清亚洲| 成年人小视频在线观看| 久久久久久色| 亚洲国产一二三精品无码| 同性恋视频一区| 国产精品一区二区三区成人| av手机免费在线观看| 夜夜嗨av一区二区三区四区 | 黄色成人在线观看网站| 欧美成人精品一区二区| 日韩av地址| 欧美一区2区视频在线观看| 久久黄色精品视频| 综合自拍亚洲综合图不卡区| 精品一区二区视频在线观看| 七七婷婷婷婷精品国产| 久久这里只有精品23| 成人写真视频| 美媛馆国产精品一区二区| 日韩视频一区二区三区四区| 日本久久久久久久久久久| av电影免费在线观看| 永久免费看mv网站入口亚洲| 成人久久精品人妻一区二区三区| 色婷婷久久久综合中文字幕| 天天综合天天做| 国产欧美一二三区| 中文字幕免费高清视频| 精品亚洲aⅴ乱码一区二区三区| 日韩精品视频一区二区在线观看| 影视一区二区| 亚洲欧洲一区二区在线观看| 欧美男男freegayvideosroom| 亚洲精品免费av| 69堂免费精品视频在线播放| 97久久久免费福利网址| a黄色片在线观看| 日韩在线观看你懂的| 酒色婷婷桃色成人免费av网| 亚洲国产古装精品网站| av网站在线免费看| 欧美精品乱码久久久久久| 国产精品自拍第一页| 欧美日韩性视频| 日本特黄特色aaa大片免费| 自拍偷拍亚洲激情| 成人欧美一区二区三区黑人一| 91一区二区在线| 香蕉视频污视频| 成人午夜精品一区二区三区| 国产成人强伦免费视频网站| 蜜桃91丨九色丨蝌蚪91桃色| 国产一级不卡毛片| 久热国产精品| 91av在线免费播放| 亚洲欧美日本日韩| 99精品免费在线观看| 国产精品腿扒开做爽爽爽挤奶网站| 日韩亚洲欧美视频| 欧美天天在线| 91黄色在线看| 国产精品xvideos88| 国产资源第一页| 在线看片不卡| 日本黄xxxxxxxxx100| 中文字幕亚洲综合久久五月天色无吗'' | 欧美一级视频免费在线观看| 草草在线视频| 欧美性视频网站| 一根才成人网| 国产精品电影网| 国产精品亲子伦av一区二区三区| 国产伦精品免费视频| 日本黄色成人| 97久草视频| 国产精品极品在线观看| 精品国产中文字幕| 久草精品在线| 色女人综合av| 91精品国产麻豆国产在线观看| 国产又爽又黄ai换脸| 欧美国产高清| 性欧美大战久久久久久久| 亚洲视频大全| 天天爽人人爽夜夜爽| 老司机免费视频一区二区三区| www.51色.com| 成av人片一区二区| 受虐m奴xxx在线观看| 中文字幕一区二区视频| 国产女人被狂躁到高潮小说| 亚洲国产精品久久一线不卡| 亚洲久久在线观看| 欧美日本在线看| 亚洲欧美高清视频| 亚洲深夜福利视频| 巨大荫蒂视频欧美大片| 久久久爽爽爽美女图片| 亚洲校园激情春色| 91久久夜色精品国产网站| 精品视频自拍| 丝袜足脚交91精品| 欧美三级乱码| mm1313亚洲国产精品无码试看| 极品销魂美女一区二区三区| 国产伦理在线观看| 欧美激情综合网| 久久亚洲AV无码| 91精品91久久久中77777| 国产精品自拍电影| 亚洲美女免费精品视频在线观看| 天堂资源在线中文| 97色在线观看免费视频| 先锋影音一区二区| 久久久久久久有限公司| 亚洲天堂一区二区三区四区| 日本www在线播放| 国产乱国产乱300精品| 国产传媒第一页| 一区二区三区在线看| 伊人成年综合网| 亚洲精品按摩视频| 91麻豆一二三四在线| 国产精品福利在线观看网址| 97青娱国产盛宴精品视频| 日本黑人久久| 亚洲激情欧美| 亚洲一区二区三区四区精品| 久久久av毛片精品| 影音先锋亚洲天堂| 日韩精品中文字幕在线不卡尤物 | 亚洲精品久久久久久无码色欲四季| 国产视频久久网| 国产91足控脚交在线观看| 国产日本欧美一区二区三区在线| 香蕉一区二区| 国产美女在线一区| 国产制服丝袜一区| 国产三级短视频| 色婷婷精品久久二区二区蜜臂av| 成人免费视频国产| 久久av.com| av日韩一区| 在线免费观看成人网| 久久久久久久欧美精品| 成人h动漫精品一区| 亚洲成a天堂v人片| 老司机午夜福利视频| 久久97精品久久久久久久不卡| 四虎地址8848精品| 一区二区三区电影| 麻豆免费看一区二区三区| 91成人在线免费视频| 欧美三级欧美成人高清www| 人妻精品无码一区二区| 久久久久久久久中文字幕| 亚洲性视频在线| 99久热在线精品视频| 国产精品一区在线| 久操视频免费在线观看| 欧美岛国在线观看| 欧美高清另类hdvideosexjaⅴ| 成人91视频| 在线日本高清免费不卡| 国产人妻黑人一区二区三区| 亚洲电影一级黄| 色婷婷在线视频| 欧美伊久线香蕉线新在线| 亚洲精品一级二级三级| 国产一区二区视频免费在线观看| 久久夜色精品一区| 啪啪小视频网站| 日韩在线免费观看视频| 国产精品一区二区精品| 三级在线免费观看| 成人免费观看视频| 日本一区二区免费电影| 国产亚洲精品成人av久久ww| 精品久久福利| 无颜之月在线看| 99亚偷拍自图区亚洲| 国产精品suv一区| 在线日韩第一页| 精品视频在线观看网站| 成人免费观看在线| 91免费精品国自产拍在线不卡| 无码人妻黑人中文字幕| 日韩一区二区三区在线播放| 国产剧情一区二区在线观看| 阿v天堂2018| 国产欧美日本一区二区三区| 91亚洲视频在线观看| 欧美日韩高清区| 日本亚洲不卡| 在线看的黄色网址| 一区二区三区久久久| 三级在线电影| 91麻豆国产精品| 亚洲一区二区动漫| 国产真实乱在线更新| 亚洲成av人片在线观看香蕉| 日韩av中字| 美女在线免费视频| 久久蜜桃一区二区| 国产免费视频一区二区三区| 91av网站在线播放| 国产精品成久久久久| 欧美bbbbb性bbbbb视频| 欧美福利一区二区| 亚洲欧洲日本韩国| 国产成人三级视频| 久久久精品影视| 亚洲国产成人一区二区| 国产99久久精品一区二区| 欧美三区视频| 无码人中文字幕| 国产视频亚洲视频| 日韩一区二区三区高清在线观看| 免费国产成人av|