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

Android自定義View-SlideListView

移動(dòng)開(kāi)發(fā) Android
在 android 中 ListView 可以說(shuō)是使用最多的控件之一,ListView 有很多的用法和處理事件,比如 item 的點(diǎn)擊和長(zhǎng)按事件,在比較多的應(yīng)用中,點(diǎn)擊就是跳轉(zhuǎn),長(zhǎng)按會(huì)彈出一些選擇菜單等。

在 android 中 ListView 可以說(shuō)是使用最多的控件之一,ListView 有很多的用法和處理事件,比如 item 的點(diǎn)擊和長(zhǎng)按事件,在比較多的應(yīng)用中,點(diǎn)擊就是跳轉(zhuǎn),長(zhǎng)按會(huì)彈出一些選擇菜單等。 這里我要介紹的是一個(gè) ListView 側(cè)滑出菜單的自定義控件

效果圖如下:
正常狀態(tài)

側(cè)滑出菜單狀態(tài)

 

分析

主要用到了 Scroller 這個(gè)滑動(dòng)類(lèi),剛開(kāi)始攔截觸摸事件在 action ==MotionEvent.ACTION_DOWN的時(shí)候,根據(jù)出點(diǎn)獲取我們點(diǎn)擊的itemView 然后根據(jù)滑動(dòng)模式(左滑動(dòng) or 右滑動(dòng))來(lái)自動(dòng)獲取左側(cè)或者右側(cè)的寬度;

在 action == MotionEvent.ACTION_MOVE 中根據(jù)移動(dòng)判斷是否可以側(cè)滑,以及側(cè)滑的方向,并使用 itemView.scrollTo(deltaX, 0); 來(lái)移動(dòng)itemView ;

***在 ction == MotionEvent.ACTION_UP 中判斷模式和移動(dòng)的距離完成側(cè)滑或者還原到初始狀態(tài)。
實(shí)現(xiàn)

***步 初始化Scroller

  1. scroller = new Scroller(context);  
  2. mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop(); 

第二步 action ==MotionEvent.ACTION_DOWN

  1. case MotionEvent.ACTION_DOWN:  
  2.                 if (this.mode == MOD_FORBID) {  
  3.                     return super.onTouchEvent(ev);  
  4.                 }  
  5.                 // 如果處于側(cè)滑完成狀態(tài),側(cè)滑回去,并直接返回  
  6.                 if (isSlided) {  
  7.                     scrollBack();  
  8.                     return false;  
  9.                 }  
  10.                 // 假如scroller滾動(dòng)還沒(méi)有結(jié)束,我們直接返回  
  11.                 if (!scroller.isFinished()) {  
  12.                     return false;  
  13.                 }  
  14.    
  15.                 downX = (int) ev.getX();  
  16.                 downY = (int) ev.getY();  
  17.    
  18.                 slidePosition = pointToPosition(downX, downY);  
  19.                 // 無(wú)效的position, 不做任何處理  
  20.                 if (slidePosition == AdapterView.INVALID_POSITION) {  
  21.                     return super.onTouchEvent(ev);  
  22.                 }  
  23.    
  24.                 // 獲取我們點(diǎn)擊的item view  
  25.                 itemView = getChildAt(slidePosition - getFirstVisiblePosition());  
  26.                 /*此處根據(jù)設(shè)置的滑動(dòng)模式,自動(dòng)獲取左側(cè)或右側(cè)菜單的長(zhǎng)度*/  
  27.                 if (this.mode == MOD_BOTH) {  
  28.                     this.leftLength = -itemView.getPaddingLeft();  
  29.                     this.rightLength = -itemView.getPaddingRight();  
  30.                 } else if (this.mode == MOD_LEFT) {  
  31.                     this.leftLength = -itemView.getPaddingLeft();  
  32.                 } else if (this.mode == MOD_RIGHT) {  
  33.                     this.rightLength = -itemView.getPaddingRight();  
  34.                 }  
  35.                 break; 

第三步 action == MotionEvent.ACTION_MOVE

  1. case MotionEvent.ACTION_MOVE:  
  2.                 if (!canMove  
  3.                         && slidePosition != AdapterView.INVALID_POSITION  
  4.                         && (Math.abs(ev.getX() - downX) > mTouchSlop && Math.abs(ev  
  5.                         .getY() - downY) < mTouchSlop)) {  
  6.                     if (mSwipeLayout != null)  
  7.                         mSwipeLayout.setEnabled(false);  
  8.                     int offsetX = downX - lastX;  
  9.                     if (offsetX > 0 && (this.mode == MOD_BOTH || this.mode == MOD_RIGHT)) {  
  10.                         /*從右向左滑*/  
  11.                         canMove = true;  
  12.                     } else if (offsetX < 0 && (this.mode == MOD_BOTH || this.mode == MOD_LEFT)) {  
  13.                         /*從左向右滑*/  
  14.                         canMove = true;  
  15.                     } else {  
  16.                         canMove = false;  
  17.                     }  
  18.                     /*此段代碼是為了避免我們?cè)趥?cè)向滑動(dòng)時(shí)同時(shí)觸發(fā)ListView的OnItemClickListener時(shí)間*/  
  19.                     MotionEvent cancelEvent = MotionEvent.obtain(ev);  
  20.                     cancelEvent  
  21.                             .setAction(MotionEvent.ACTION_CANCEL  
  22.                                     | (ev.getActionIndex() << MotionEvent.ACTION_POINTER_INDEX_SHIFT));  
  23.                     onTouchEvent(cancelEvent);  
  24.                 }  
  25.                 if (canMove) {  
  26.                     /*設(shè)置此屬性,可以在側(cè)向滑動(dòng)時(shí),保持ListView不會(huì)上下滾動(dòng)*/  
  27.                     requestDisallowInterceptTouchEvent(true);  
  28.                     // 手指拖動(dòng)itemView滾動(dòng), deltaX大于0向左滾動(dòng),小于0向右滾  
  29.                     int deltaX = downX - lastX;  
  30.                     if (deltaX < 0 && (this.mode == MOD_BOTH || this.mode == MOD_LEFT)) {  
  31.                         /*向左滑*/  
  32.                         itemView.scrollTo(deltaX, 0);  
  33.                     } else if (deltaX > 0 && (this.mode == MOD_BOTH || this.mode == MOD_RIGHT)) {  
  34.                         /*向右滑*/  
  35.                         itemView.scrollTo(deltaX, 0);  
  36.                     } else {  
  37.                         itemView.scrollTo(0, 0);  
  38.                     }  
  39.                     return true;  
  40.                 }  
  41.                 break; 

第四步 action == MotionEvent.ACTION_UP

  1. case MotionEvent.ACTION_UP:  
  2.                 if (mSwipeLayout != null)  
  3.                     mSwipeLayout.setEnabled(true);  
  4.                 //requestDisallowInterceptTouchEvent(false);  
  5.                 if (canMove){  
  6.                     canMove = false;  
  7.                     scrollByDistanceX();  
  8.                 }  
  9.                 break; 

完整代碼

以下是完整代碼

  1. package com.jwenfeng.fastdev.view;  
  2.    
  3. import android.content.Context;  
  4. import android.support.v4.widget.SwipeRefreshLayout;  
  5. import android.util.AttributeSet;  
  6. import android.view.MotionEvent;  
  7. import android.view.View;  
  8. import android.view.ViewConfiguration;  
  9. import android.widget.AdapterView;  
  10. import android.widget.ListView;  
  11. import android.widget.Scroller;  
  12.    
  13. /**  
  14.  * 當(dāng)前類(lèi)注釋: ListView 側(cè)滑出菜單  
  15.  * 項(xiàng)目名:fastdev  
  16.  * 包名:com.jwenfeng.fastdev.view  
  17.  * 作者:jinwenfeng on 16/4/11 10:55  
  18.  * 郵箱:823546371@qq.com  
  19.  * QQ: 823546371  
  20.  * 公司:南京穆尊信息科技有限公司  
  21.  * © 2016 jinwenfeng  
  22.  * ©版權(quán)所有,未經(jīng)允許不得傳播  
  23.  */  
  24. public class SlideListView extends ListView {  
  25.    
  26.     /**下拉刷新view*/  
  27.     private SwipeRefreshLayout mSwipeLayout;  
  28.     /**  
  29.      * 禁止側(cè)滑模式  
  30.      */  
  31.     public static int MOD_FORBID = 0;  
  32.     /**  
  33.      * 從左向右滑出菜單模式  
  34.      */  
  35.     public static int MOD_LEFT = 1;  
  36.     /**  
  37.      * 從右向左滑出菜單模式  
  38.      */  
  39.     public static int MOD_RIGHT = 2;  
  40.     /**  
  41.      * 左右均可以滑出菜單模式  
  42.      */  
  43.     public static int MOD_BOTH = 3;  
  44.     /**  
  45.      * 當(dāng)前的模式  
  46.      */  
  47.     private int mode = MOD_FORBID;  
  48.     /**  
  49.      * 左側(cè)菜單的長(zhǎng)度  
  50.      */  
  51.     private int leftLength = 0;  
  52.     /**  
  53.      * 右側(cè)菜單的長(zhǎng)度  
  54.      */  
  55.     private int rightLength = 0;  
  56.    
  57.     /**  
  58.      * 當(dāng)前滑動(dòng)的ListView position  
  59.      */  
  60.     private int slidePosition;  
  61.     /**  
  62.      * 手指按下X的坐標(biāo)  
  63.      */  
  64.     private int downY;  
  65.     /**  
  66.      * 手指按下Y的坐標(biāo)  
  67.      */  
  68.     private int downX;  
  69.     /**  
  70.      * ListView的item  
  71.      */  
  72.     private View itemView;  
  73.     /**  
  74.      * 滑動(dòng)類(lèi)  
  75.      */  
  76.     private Scroller scroller;  
  77.     /**  
  78.      * 認(rèn)為是用戶(hù)滑動(dòng)的最小距離  
  79.      */  
  80.     private int mTouchSlop;  
  81.    
  82.     /**  
  83.      * 判斷是否可以側(cè)向滑動(dòng)  
  84.      */  
  85.     private boolean canMove = false;  
  86.     /**  
  87.      * 標(biāo)示是否完成側(cè)滑  
  88.      */  
  89.     private boolean isSlided = false;  
  90.    
  91.     public SlideListView(Context context) {  
  92.         this(context, null);  
  93.     }  
  94.    
  95.     public SlideListView(Context context, AttributeSet attrs) {  
  96.         this(context, attrs,0);  
  97.     }  
  98.    
  99.     public SlideListView(Context context, AttributeSet attrs, int defStyleAttr) {  
  100.         super(context, attrs, defStyleAttr);  
  101.         scroller = new Scroller(context);  
  102.         mTouchSlop = ViewConfiguration.get(getContext()).getScaledTouchSlop();  
  103.     }  
  104.    
  105.     /**  
  106.      * 初始化菜單的滑出模式  
  107.      *  
  108.      * @param mode  
  109.      */  
  110.     public void initSlideMode(int mode) {  
  111.         this.mode = mode;  
  112.     }  
  113.    
  114.     /**  
  115.      * 處理我們拖動(dòng)ListView item的邏輯  
  116.      */  
  117.     @Override  
  118.     public boolean onTouchEvent(MotionEvent ev) {  
  119.         final int action = ev.getAction();  
  120.         int lastX = (int) ev.getX();  
  121.    
  122.         switch (action) {  
  123.             case MotionEvent.ACTION_DOWN:  
  124.                 if (this.mode == MOD_FORBID) {  
  125.                     return super.onTouchEvent(ev);  
  126.                 }  
  127.                 // 如果處于側(cè)滑完成狀態(tài),側(cè)滑回去,并直接返回  
  128.                 if (isSlided) {  
  129.                     scrollBack();  
  130.                     return false;  
  131.                 }  
  132.                 // 假如scroller滾動(dòng)還沒(méi)有結(jié)束,我們直接返回  
  133.                 if (!scroller.isFinished()) {  
  134.                     return false;  
  135.                 }  
  136.    
  137.                 downX = (int) ev.getX();  
  138.                 downY = (int) ev.getY();  
  139.    
  140.                 slidePosition = pointToPosition(downX, downY);  
  141.                 // 無(wú)效的position, 不做任何處理  
  142.                 if (slidePosition == AdapterView.INVALID_POSITION) {  
  143.                     return super.onTouchEvent(ev);  
  144.                 }  
  145.    
  146.                 // 獲取我們點(diǎn)擊的item view  
  147.                 itemView = getChildAt(slidePosition - getFirstVisiblePosition());  
  148.                 /*此處根據(jù)設(shè)置的滑動(dòng)模式,自動(dòng)獲取左側(cè)或右側(cè)菜單的長(zhǎng)度*/  
  149.                 if (this.mode == MOD_BOTH) {  
  150.                     this.leftLength = -itemView.getPaddingLeft();  
  151.                     this.rightLength = -itemView.getPaddingRight();  
  152.                 } else if (this.mode == MOD_LEFT) {  
  153.                     this.leftLength = -itemView.getPaddingLeft();  
  154.                 } else if (this.mode == MOD_RIGHT) {  
  155.                     this.rightLength = -itemView.getPaddingRight();  
  156.                 }  
  157.                 break;  
  158.             case MotionEvent.ACTION_MOVE:  
  159.                 if (!canMove  
  160.                         && slidePosition != AdapterView.INVALID_POSITION  
  161.                         && (Math.abs(ev.getX() - downX) > mTouchSlop && Math.abs(ev  
  162.                         .getY() - downY) < mTouchSlop)) {  
  163.                     if (mSwipeLayout != null)  
  164.                         mSwipeLayout.setEnabled(false);  
  165.                     int offsetX = downX - lastX;  
  166.                     if (offsetX > 0 && (this.mode == MOD_BOTH || this.mode == MOD_RIGHT)) {  
  167.                         /*從右向左滑*/  
  168.                         canMove = true;  
  169.                     } else if (offsetX < 0 && (this.mode == MOD_BOTH || this.mode == MOD_LEFT)) {  
  170.                         /*從左向右滑*/  
  171.                         canMove = true;  
  172.                     } else {  
  173.                         canMove = false;  
  174.                     }  
  175.                     /*此段代碼是為了避免我們?cè)趥?cè)向滑動(dòng)時(shí)同時(shí)觸發(fā)ListView的OnItemClickListener時(shí)間*/  
  176.                     MotionEvent cancelEvent = MotionEvent.obtain(ev);  
  177.                     cancelEvent  
  178.                             .setAction(MotionEvent.ACTION_CANCEL  
  179.                                     | (ev.getActionIndex() << MotionEvent.ACTION_POINTER_INDEX_SHIFT));  
  180.                     onTouchEvent(cancelEvent);  
  181.                 }  
  182.                 if (canMove) {  
  183.                     /*設(shè)置此屬性,可以在側(cè)向滑動(dòng)時(shí),保持ListView不會(huì)上下滾動(dòng)*/  
  184.                     requestDisallowInterceptTouchEvent(true);  
  185.                     // 手指拖動(dòng)itemView滾動(dòng), deltaX大于0向左滾動(dòng),小于0向右滾  
  186.                     int deltaX = downX - lastX;  
  187.                     if (deltaX < 0 && (this.mode == MOD_BOTH || this.mode == MOD_LEFT)) {  
  188.                         /*向左滑*/  
  189.                         itemView.scrollTo(deltaX, 0);  
  190.                     } else if (deltaX > 0 && (this.mode == MOD_BOTH || this.mode == MOD_RIGHT)) {  
  191.                         /*向右滑*/  
  192.                         itemView.scrollTo(deltaX, 0);  
  193.                     } else {  
  194.                         itemView.scrollTo(0, 0);  
  195.                     }  
  196.                     return true;  
  197.                 }  
  198.                 break;  
  199.    
  200.             case MotionEvent.ACTION_UP:  
  201.                 if (mSwipeLayout != null)  
  202.                     mSwipeLayout.setEnabled(true);  
  203.                 //requestDisallowInterceptTouchEvent(false);  
  204.                 if (canMove){  
  205.                     canMove = false;  
  206.                     scrollByDistanceX();  
  207.                 }  
  208.                 break;  
  209.         }  
  210.    
  211.         return super.onTouchEvent(ev);  
  212.     }  
  213.    
  214.     private void scrollByDistanceX() {  
  215.         if(this.mode == MOD_FORBID){  
  216.             return;  
  217.         }  
  218.         if(itemView.getScrollX() > 0 && (this.mode == MOD_BOTH || this.mode == MOD_RIGHT)){  
  219.             /*從右向左滑*/  
  220.             if (itemView.getScrollX() >= rightLength / 2) {  
  221.                 scrollLeft();  
  222.             }  else {  
  223.                 // 滾回到原始位置  
  224.                 scrollBack();  
  225.             }  
  226.         }else if(itemView.getScrollX() < 0 && (this.mode == MOD_BOTH || this.mode == MOD_LEFT)){  
  227.             /*從左向右滑*/  
  228.             if (itemView.getScrollX() <= -leftLength / 2) {  
  229.                 scrollRight();  
  230.             } else {  
  231.                 // 滾回到原始位置  
  232.                 scrollBack();  
  233.             }  
  234.         }else{  
  235.             // 滾回到原始位置  
  236.             scrollBack();  
  237.         }  
  238.     }  
  239.    
  240.     /**  
  241.      * 往右滑動(dòng),getScrollX()返回的是左邊緣的距離,就是以View左邊緣為原點(diǎn)到開(kāi)始滑動(dòng)的距離,所以向右邊滑動(dòng)為負(fù)值  
  242.      */  
  243.     private void scrollRight() {  
  244.         isSlided = true;  
  245.         final int delta = (leftLength + itemView.getScrollX());  
  246.         // 調(diào)用startScroll方法來(lái)設(shè)置一些滾動(dòng)的參數(shù),我們?cè)赾omputeScroll()方法中調(diào)用scrollTo來(lái)滾動(dòng)item  
  247.         scroller.startScroll(itemView.getScrollX(), 0, -delta, 0,  
  248.                 Math.abs(delta));  
  249.         postInvalidate(); // 刷新itemView  
  250.     }  
  251.    
  252.     /**  
  253.      * 向左滑動(dòng),根據(jù)上面我們知道向左滑動(dòng)為正值  
  254.      */  
  255.     private void scrollLeft() {  
  256.         isSlided = true;  
  257.         final int delta = (rightLength - itemView.getScrollX());  
  258.         // 調(diào)用startScroll方法來(lái)設(shè)置一些滾動(dòng)的參數(shù),我們?cè)赾omputeScroll()方法中調(diào)用scrollTo來(lái)滾動(dòng)item  
  259.         scroller.startScroll(itemView.getScrollX(), 0, delta, 0,  
  260.                 Math.abs(delta));  
  261.         postInvalidate(); // 刷新itemView  
  262.    
  263.     }  
  264.    
  265.     private void scrollBack() {  
  266.         isSlided = false;  
  267.         scroller.startScroll(itemView.getScrollX(), 0, -itemView.getScrollX(),  
  268.                 0, Math.abs(itemView.getScrollX()));  
  269.         postInvalidate(); // 刷新itemView  
  270.     }  
  271.    
  272.     @Override  
  273.     public void computeScroll() {  
  274.         // 調(diào)用startScroll的時(shí)候scroller.computeScrollOffset()返回true,  
  275.         if (scroller.computeScrollOffset()) {  
  276.             // 讓ListView item根據(jù)當(dāng)前的滾動(dòng)偏移量進(jìn)行滾動(dòng)  
  277.             itemView.scrollTo(scroller.getCurrX(), scroller.getCurrY());  
  278.             postInvalidate();  
  279.         }  
  280.     }  
  281.    
  282.     /**  
  283.      * 提供給外部調(diào)用,用以將側(cè)滑出來(lái)的滑回去  
  284.      */  
  285.     public void slideBack() {  
  286.         this.scrollBack();  
  287.     }  
  288.    
  289.     public void setSwipeLayout(SwipeRefreshLayout mSwipeLayout) {  
  290.         this.mSwipeLayout = mSwipeLayout;  
  291.     }  
責(zé)任編輯:陳琳 來(lái)源: 曉風(fēng)殘?jiān)碌牟┛?/a>
相關(guān)推薦

2016-11-16 21:55:55

源碼分析自定義view androi

2016-12-26 15:25:59

Android自定義View

2017-03-02 13:33:19

Android自定義View

2013-05-20 17:33:44

Android游戲開(kāi)發(fā)自定義View

2012-05-18 10:52:20

TitaniumAndroid模塊自定義View模塊

2013-01-06 10:43:54

Android開(kāi)發(fā)View特效

2021-10-26 10:07:02

鴻蒙HarmonyOS應(yīng)用

2011-08-02 11:17:13

iOS開(kāi)發(fā) View

2017-03-14 15:09:18

AndroidView圓形進(jìn)度條

2013-04-01 14:35:10

Android開(kāi)發(fā)Android自定義x

2017-05-18 12:36:16

android萬(wàn)能適配器列表視圖

2010-02-07 14:02:16

Android 界面

2017-05-19 10:03:31

AndroidBaseAdapter實(shí)踐

2015-02-12 15:33:43

微信SDK

2011-08-18 17:32:55

iPhone開(kāi)發(fā)Table Cell

2013-05-02 14:08:18

2014-12-10 10:37:45

Android自定義布局

2015-02-11 17:49:35

Android源碼自定義控件

2015-02-12 15:38:26

微信SDK

2013-01-09 17:22:38

Android開(kāi)發(fā)Camera
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

日韩精品视频免费专区在线播放| 日韩综合精品| 国产视频一区在线播放| 欧美精品第一页在线播放| 日韩av成人网| 日韩黄色短视频| 久久久久免费看| jazzjazz国产精品麻豆| 亚洲最色的网站| 九九久久99| 佐佐木明希电影| 亚洲午夜精品一区| 黄在线免费看| 美国毛片一区二区三区| 中文国产成人精品久久一| 色婷婷一区二区三区在线观看| 日本欧美在线视频免费观看| 豆国产96在线|亚洲| 91精品国产色综合| 99精品中文字幕| 麻豆一区二区| 日韩欧美中文在线| 亚洲国产一区二区三区在线播 | www.日韩一区| 成午夜精品一区二区三区软件| 图片区小说区区亚洲影院| 欧美精品尤物在线| 99国产精品久久久久久久成人| 亚洲三级免费| 亚洲一区第一页| 日韩精品xxx| 91精品xxx在线观看| 成人欧美一区二区三区在线播放| 91久久久久久久一区二区| 日韩一级av毛片| 国产精品巨作av| 欧美精品乱码久久久久久按摩 | 成人在线app| 国产日韩一级二级三级| 国产一区二区中文字幕免费看| 亚洲精品乱码视频| 人妻少妇一区二区| 成人四虎影院| 一片黄亚洲嫩模| 亚洲国产精品女人| 熟妇人妻一区二区三区四区| 国产精品一区二区三区网站| 国产精品久久电影观看| 69视频免费在线观看| 亚洲狼人精品一区二区三区| 久久6免费高清热精品| 欧美大波大乳巨大乳| 亚洲婷婷丁香| 亚洲欧美国产视频| 青青草视频播放| 精品午夜视频| 欧美日韩国产123区| 国产情侣av自拍| 麻豆视频在线免费观看| 国产精品美女久久久久高潮| 5566中文字幕一区二区| 国产肥老妇视频| 国产福利一区二区三区视频| 91影视免费在线观看| 国产普通话bbwbbwbbw| 免费不卡在线视频| 91精品久久久久久| 成人黄色a级片| 三级欧美日韩| 日韩精品专区在线| 可以免费观看av毛片| 黑人精品视频| 一区二区高清免费观看影视大全 | 成人一区二区三区仙踪林| 女人黄色免费在线观看| 亚洲视频狠狠干| 一区二区精品在线观看| 酒色婷婷桃色成人免费av网| 国产伦精一区二区三区| 91九色在线观看| 亚洲精品一区二区三区四区| 国产成人综合亚洲91猫咪| 成人动漫网站在线观看| 国产一级片av| 蜜臀久久久久久久| 国产91色在线播放| 国产精品二区一区二区aⅴ| 欧美va天堂| 欧美激情一区二区三区成人| 黄色一级片免费看| 激情婷婷欧美| 欧洲中文字幕国产精品| 日韩熟女一区二区| 麻豆一区二区三| 国产人妖伪娘一区91| 99er热精品视频| 久久精品噜噜噜成人av农村| 91网站在线看| 亚洲成人久久精品| 91美女在线观看| 免费成人深夜夜行视频| 日本午夜在线视频| 91视频国产观看| 色噜噜一区二区| 在线a人片免费观看视频| 国产亚洲综合在线| 91视频国产高清| 污污网站在线免费观看| 国产又爽又黄又嫩又猛又粗| 日韩av中文在线观看| 国产日韩欧美在线| 精品国产无码AV| 波多野结衣中文字幕一区二区三区 | 久久成人18免费网站| 国产午夜精品理论片在线| 国产专区一区| 国产成+人+综合+亚洲欧洲| 国产污视频网站| 国产精品亚洲一区二区三区在线| yellow视频在线观看一区二区| 日本xxxxwww| 久久只精品国产| 浴室偷拍美女洗澡456在线| 超碰97免费在线| 午夜精品在线视频一区| 免费欧美一级视频| 欧美电影网站| 亚洲国产成人91精品| 亚洲一级av无码毛片精品| 午夜a一级毛片亚洲欧洲| 亚洲最新av在线| 九九热国产在线| 视频在线观看一区| 国产成人黄色av| 真实的国产乱xxxx在线91| 成人一区二区在线观看| 91av在线免费观看| 国产熟女一区二区三区五月婷| 久久久久久久精| 亚洲精品欧美精品| 麻豆免费在线| 日韩欧美国产三级| 欧美日韩xxx| 色综合久久五月| 亚洲大全视频| 日韩美女免费视频| av男人天堂av| 91理论电影在线观看| 免费一级淫片aaa片毛片a级| 亚洲国产91视频| 亚洲精品国产综合久久| 欧美成人一二三区| 美女任你摸久久| 精品一区在线播放| 日韩脚交footjobhd| 67194成人在线观看| 88av在线播放| 激情六月综合| 国产精品免费一区二区三区在线观看| 日本网站在线免费观看视频| 精品高清一区二区三区| 亚洲国产99精品国自产| av片在线免费看| 午夜宅男久久久| 精品伦理一区二区三区| 成人性生交大片免费看在线播放| 欧美日韩国产高清一区二区三区| 国产1区2区在线观看| 久久久久免费| 精品乱码一区二区三区| 在线免费观看a视频| 日韩欧美国产午夜精品| 国产亚洲精品久久久久久无几年桃 | 国模精品一区二区| 色系网站成人免费| 精品一区二区三区蜜桃在线| 蜜臀久久久久久久| 亚洲精品中文字幕乱码三区不卡| av在线免费观看网站| 亚洲人成网站影音先锋播放| 91av免费观看| 欧美图片一区二区| 亚洲精品1区2区| 蜜桃狠狠色伊人亚洲综合网站| 国内在线免费视频| 日韩免费成人网| 殴美一级黄色片| 日韩专区一卡二卡| 视频在线一区二区三区| 偷拍精品精品一区二区三区| 亚洲欧美国产一本综合首页| 亚洲手机在线观看| 亚洲欧美日韩精品久久久久| 国产 porn| 成人羞羞网站| 亚洲自拍偷拍第一页| 国产二区在线播放| 欧美乱熟臀69xxxxxx| www.99re7| 国产大陆a不卡| 日韩黄色片视频| 欧美gvvideo网站| 99免费在线观看视频| 国产黄大片在线观看| 亚洲第一网站免费视频| 天天干在线播放| 美足av综合网| 精品人在线二区三区| 操她视频在线观看| 91免费在线播放| 日本中文字幕观看| 国内精品久久久久国产盗摄免费观看完整版| 91精品国产高清久久久久久91裸体 | 亚洲怡红院在线观看| 国产精品一区在线观看乱码 | 精品久久久国产| 精品无码在线观看| 99综合在线| 水蜜桃亚洲精品| 国产色噜噜噜91在线精品| 国产精品r级在线| 国产在线高清视频| 亚洲精品97| 久久人人看视频| 国产永久免费高清在线观看| 777亚洲妇女| 毛片基地在线观看| 国产精品电影一区二区三区| 亚洲少妇18p| 狠狠色狠狠色综合| 久久久久久av无码免费网站下载| 国产成人ay| 国产欧美在线视频| 成人福利视频| 欧美日本国产在线| 黄色网页网址在线免费| 亚洲国产精品字幕| jlzzjlzz亚洲女人18| 色久优优欧美色久优优| 欧美黑吊大战白妞| 久久久久综合网| 内射中出日韩无国产剧情| 国产在线播精品第三| 精品久久久久久久免费人妻| 欧美日韩综合| 国产乱码一区| 伊色综合久久之综合久久| 久久久久久久久久国产精品| 男人和女人做事情在线视频网站免费观看| 亚洲国产精品va在线看黑人动漫 | 99这里有精品| 日韩免费在线观看av| 天天av综合| 亚洲高清视频在线观看| 九九精品久久| 免费久久99精品国产自| 高清日韩中文字幕| 亚洲在线观看视频| 99久热在线精品视频观看| 国产精品十八以下禁看| 欧美日韩在线精品一区二区三区激情综合 | 自拍在线观看| 欧美美女一区二区三区| 国产美女主播在线观看| 欧美日韩成人高清| 一级片免费观看视频| 欧美偷拍一区二区| 精品人妻一区二区色欲产成人| 樱花草国产18久久久久| 亚洲一区欧美在线| 欧美日韩激情视频| 强行糟蹋人妻hd中文| 亚洲欧美国产77777| 日韩毛片无码永久免费看| 久久久久青草大香线综合精品| 精品少妇一区二区三区免费观| 久久日一线二线三线suv| 亚洲av成人片色在线观看高潮 | 久久一区二区三区国产精品| 精品人妻一区二区三区视频| 成人国产精品视频| 色哟哟视频在线| 91视频com| 中文字幕免费视频| 亚洲欧美日韩久久精品| 国产一级在线观看视频| 午夜久久福利影院| 伊人中文字幕在线观看| 欧美视频第二页| 国产精品高潮呻吟av| 91精品国产综合久久婷婷香蕉| 亚洲xxx在线| 亚洲精品国产精品自产a区红杏吧| 亚洲色偷精品一区二区三区| 亚洲一级黄色av| av在线播放国产| 欧美日韩精品高清| 噼里啪啦国语在线观看免费版高清版| 久久精品网址| 爱情岛论坛成人| 国内外成人在线| 超碰caoprom| 成人av资源在线观看| 中文字幕在线观看的网站| 国产精品视频一二三区| 免费看一级一片| 亚洲欧美韩国综合色| 国产精品自拍99| 欧美丰满美乳xxx高潮www| www.超碰在线.com| 在线电影中文日韩| free性欧美| 国产精品视频专区| 超碰精品在线观看| 日韩欧美精品在线不卡| 久久国产亚洲精品| 男人操女人免费软件| 狠狠色综合日日| 国产精品免费视频一区| 2022亚洲天堂| 蜜桃av一区二区三区| 欧美日韩一区二区三区四区五区六区 | 一区二区亚洲精品国产| 在线电影福利片| 日韩**中文字幕毛片| 国产精品中文字幕制服诱惑| 国产一区二区三区高清视频| 欧美岛国激情| 精品欧美一区免费观看α√| 午夜在线观看免费一区| 在线视频一二区| 99久久精品久久久久久清纯| 网爆门在线观看| 亚洲一区二区精品3399| 亚洲天堂男人网| 亚洲欧美激情精品一区二区| 欧美野外wwwxxx| 国产中文字幕亚洲| 亚洲精品黑牛一区二区三区| 伊人婷婷久久| 久久精品一区二区国产| 色哟哟无码精品一区二区三区| 自拍偷拍亚洲欧美日韩| 91免费综合在线| 高清电影一区| 国产91aaa| 亚洲一本视频| 亚洲av毛片在线观看| 91香蕉视频mp4| 精品在线视频免费| 欧美一区二区在线免费播放| 国内精品久久久久久久久久| 国产一区二区免费| 成人性生活av| 国产一区精品视频| 97精品视频| 日本三级免费观看| 国产成人三级在线观看| 小泽玛利亚一区二区免费| 欧美三电影在线| 97电影在线观看| 国产精品久久精品| 欧美久久综合网| 999精彩视频| 日本一区二区成人在线| 久久久国产免费| 国产亚洲成av人片在线观看桃| 天天免费亚洲黑人免费| 精品一区日韩成人| 亚洲激情在线| 波多野在线播放| 欧洲在线/亚洲| 国产高清av在线| 国产主播喷水一区二区| 青青草国产免费一区二区下载 | 亚洲天堂美女视频| 依依成人精品视频| 一区二区三区黄色片| 亚洲精品按摩视频| 久草在线视频福利| 精品国产一区二区三区免费 | 色综合老司机第九色激情| 欧洲精品99毛片免费高清观看| 91九色国产ts另类人妖| 国产乱子轮精品视频| 外国一级黄色片| 欧美大片在线观看一区二区| 波多野结衣在线播放| 久久久福利视频| 丝袜亚洲精品中文字幕一区| 欧美黄色高清视频| 制服丝袜亚洲网站| av电影高清在线观看| 国产免费一区| 天堂在线亚洲视频| 亚洲黄色在线网站| 欧美日本在线播放| 欧美18一19xxx性| 国内精品久久国产| 蘑菇福利视频一区播放|