亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統(tǒng) > Android > 正文

Android App中實(shí)現(xiàn)向右滑動(dòng)銷毀功能的要點(diǎn)解析

2019-12-12 06:41:50
字體:
供稿:網(wǎng)友

今天給大家?guī)硪粋€(gè)向右滑動(dòng)銷毀Activity的效果,Activtiy隨著手指的移動(dòng)而移動(dòng),該效果在Android應(yīng)用中還是比較少見的,在IOS中就比較常見了,例如“網(wǎng)易新聞” ,"美食杰" , "淘寶"等應(yīng)用采用此效果,而Android應(yīng)用中“知乎”采用的也是這種滑動(dòng)切換Activity的效果, 不過我發(fā)現(xiàn)“淘寶”并沒有隨著手勢(shì)的移動(dòng)而移動(dòng),只是捕捉到滑動(dòng)手勢(shì),然后產(chǎn)生平滑切換界面的動(dòng)畫效果,這個(gè)在Android中還是很好實(shí)現(xiàn)的,  網(wǎng)上很多滑動(dòng)切換Activity的Demo貌似都是這種效果的吧,如果要實(shí)現(xiàn)類似“網(wǎng)易新聞”的隨手勢(shì)的滑動(dòng)而滑動(dòng),似乎就要復(fù)雜一些了,我之前在IOS中看到"網(wǎng)易新聞"的這種效果就很感興趣,然后群里也有朋友問我怎么實(shí)現(xiàn)類似“知乎”這個(gè)應(yīng)用的滑動(dòng)切換的效果,我也特意去下了一個(gè)“知乎”,在之前的實(shí)現(xiàn)中我遇到了一些瓶頸,沒有實(shí)現(xiàn)出來就擱置了在那里,今天無意中看到給Activity設(shè)置透明的背景,于是乎我恍然大悟,真是靈感來源于瞬間,不能強(qiáng)求啊,然后自己就將此效果實(shí)現(xiàn)了出來,給大家分享一下,希望給有此需求的你一點(diǎn)點(diǎn)幫助。
不知道大家對(duì)Scroller這個(gè)類以及View的scrollBy() 和scrollTo()的使用熟悉不?我之前介紹了Scroller類的滑動(dòng)實(shí)現(xiàn)原理Android 帶你從源碼的角度解析Scroller的滾動(dòng)實(shí)現(xiàn)原理,在那里面也介紹了scrollBy() 和scrollTo()方法,不明白的同學(xué)可以去看看,這對(duì)實(shí)現(xiàn)此效果有很大的幫助,了解scrollBy() 和scrollTo()的朋友應(yīng)該知道,如果想對(duì)某個(gè)View(例如Button)就行滾動(dòng),我們直接調(diào)用該View(Button)的scrollBy()方法,并不是該View(Button)進(jìn)行滾動(dòng),而是該View里面的內(nèi)容(Button上面的文字)進(jìn)行滾動(dòng),所以我們假如要讓View整體滾動(dòng)就需要對(duì)其View的父布局調(diào)用scrollBy()方法,回到這篇文章來,假如我們想要對(duì)一個(gè)Activity進(jìn)行滾動(dòng),我們就需求對(duì)這個(gè)Activity布局文件的頂層布局的父布局進(jìn)行滾動(dòng)
例如下面的XML布局文件

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:tools="http://schemas.android.com/tools"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:gravity="center"   android:orientation="vertical" >   </LinearLayout> 

如果我們對(duì)LinearLayout進(jìn)行滾動(dòng),并不能實(shí)現(xiàn)我們想要的效果,而只能對(duì)LinearLayout里面的內(nèi)容或者說是子View進(jìn)行滾動(dòng),所以我們需要獲取利用LinearLayout的getParent()方法獲取父布局,其實(shí)Android系統(tǒng)會(huì)對(duì)我們的布局文件的最外層套一個(gè)FrameLayout,所以我們其實(shí)就是對(duì)FrameLayout進(jìn)行滾動(dòng)就行了
了解了實(shí)現(xiàn)的原理之后,我們就來編寫代碼吧,首先新建一個(gè)android工程,取名SildingFinish
由于我們的需求可能不是在一個(gè)界面提供這個(gè)滑動(dòng)切換的效果,所以我們應(yīng)該將這部分滑動(dòng)的邏輯抽取出來,我這里就他寫成了一個(gè)擴(kuò)展RelativeLayout的自定義布局SildingFinishLayout,首先我們看其代碼

package com.example.view;  import android.content.Context; import android.util.AttributeSet; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.view.ViewConfiguration; import android.view.ViewGroup; import android.widget.AbsListView; import android.widget.RelativeLayout; import android.widget.ScrollView; import android.widget.Scroller;  /**  * 自定義可以滑動(dòng)的RelativeLayout, 類似于IOS的滑動(dòng)刪除頁面效果,當(dāng)我們要使用  * 此功能的時(shí)候,需要將該Activity的頂層布局設(shè)置為SildingFinishLayout,  * 然后需要調(diào)用setTouchView()方法來設(shè)置需要滑動(dòng)的View  *  * @author xiaanming  *  * @blog http://blog.csdn.net/xiaanming  *  */ public class SildingFinishLayout extends RelativeLayout implements     OnTouchListener {   /**    * SildingFinishLayout布局的父布局    */   private ViewGroup mParentView;   /**    * 處理滑動(dòng)邏輯的View    */   private View touchView;   /**    * 滑動(dòng)的最小距離    */   private int mTouchSlop;   /**    * 按下點(diǎn)的X坐標(biāo)    */   private int downX;   /**    * 按下點(diǎn)的Y坐標(biāo)    */   private int downY;   /**    * 臨時(shí)存儲(chǔ)X坐標(biāo)    */   private int tempX;   /**    * 滑動(dòng)類    */   private Scroller mScroller;   /**    * SildingFinishLayout的寬度    */   private int viewWidth;   /**    * 記錄是否正在滑動(dòng)    */   private boolean isSilding;      private OnSildingFinishListener onSildingFinishListener;   private boolean isFinish;       public SildingFinishLayout(Context context, AttributeSet attrs) {     this(context, attrs, 0);   }    public SildingFinishLayout(Context context, AttributeSet attrs, int defStyle) {     super(context, attrs, defStyle);      mTouchSlop = ViewConfiguration.get(context).getScaledTouchSlop();     mScroller = new Scroller(context);   }    @Override   protected void onLayout(boolean changed, int l, int t, int r, int b) {     super.onLayout(changed, l, t, r, b);     if (changed) {       // 獲取SildingFinishLayout所在布局的父布局       mParentView = (ViewGroup) this.getParent();       viewWidth = this.getWidth();     }   }    /**    * 設(shè)置OnSildingFinishListener, 在onSildingFinish()方法中finish Activity    *    * @param onSildingFinishListener    */   public void setOnSildingFinishListener(       OnSildingFinishListener onSildingFinishListener) {     this.onSildingFinishListener = onSildingFinishListener;   }    /**    * 設(shè)置Touch的View    *    * @param touchView    */   public void setTouchView(View touchView) {     this.touchView = touchView;     touchView.setOnTouchListener(this);   }    public View getTouchView() {     return touchView;   }    /**    * 滾動(dòng)出界面    */   private void scrollRight() {     final int delta = (viewWidth + mParentView.getScrollX());     // 調(diào)用startScroll方法來設(shè)置一些滾動(dòng)的參數(shù),我們?cè)赾omputeScroll()方法中調(diào)用scrollTo來滾動(dòng)item     mScroller.startScroll(mParentView.getScrollX(), 0, -delta + 1, 0,         Math.abs(delta));     postInvalidate();   }    /**    * 滾動(dòng)到起始位置    */   private void scrollOrigin() {     int delta = mParentView.getScrollX();     mScroller.startScroll(mParentView.getScrollX(), 0, -delta, 0,         Math.abs(delta));     postInvalidate();   }    /**    * touch的View是否是AbsListView, 例如ListView, GridView等其子類    *    * @return    */   private boolean isTouchOnAbsListView() {     return touchView instanceof AbsListView ? true : false;   }    /**    * touch的view是否是ScrollView或者其子類    *    * @return    */   private boolean isTouchOnScrollView() {     return touchView instanceof ScrollView ? true : false;   }    @Override   public boolean onTouch(View v, MotionEvent event) {     switch (event.getAction()) {     case MotionEvent.ACTION_DOWN:       downX = tempX = (int) event.getRawX();       downY = (int) event.getRawY();       break;     case MotionEvent.ACTION_MOVE:       int moveX = (int) event.getRawX();       int deltaX = tempX - moveX;       tempX = moveX;       if (Math.abs(moveX - downX) > mTouchSlop           && Math.abs((int) event.getRawY() - downY) < mTouchSlop) {         isSilding = true;          // 若touchView是AbsListView,         // 則當(dāng)手指滑動(dòng),取消item的點(diǎn)擊事件,不然我們滑動(dòng)也伴隨著item點(diǎn)擊事件的發(fā)生         if (isTouchOnAbsListView()) {           MotionEvent cancelEvent = MotionEvent.obtain(event);           cancelEvent               .setAction(MotionEvent.ACTION_CANCEL                   | (event.getActionIndex() << MotionEvent.ACTION_POINTER_INDEX_SHIFT));           v.onTouchEvent(cancelEvent);         }        }        if (moveX - downX >= 0 && isSilding) {         mParentView.scrollBy(deltaX, 0);          // 屏蔽在滑動(dòng)過程中ListView ScrollView等自己的滑動(dòng)事件         if (isTouchOnScrollView() || isTouchOnAbsListView()) {           return true;         }       }       break;     case MotionEvent.ACTION_UP:       isSilding = false;       if (mParentView.getScrollX() <= -viewWidth / 2) {         isFinish = true;         scrollRight();       } else {         scrollOrigin();         isFinish = false;       }       break;     }      // 假如touch的view是AbsListView或者ScrollView 我們處理完上面自己的邏輯之后     // 再交給AbsListView, ScrollView自己處理其自己的邏輯     if (isTouchOnScrollView() || isTouchOnAbsListView()) {       return v.onTouchEvent(event);     }      // 其他的情況直接返回true     return true;   }    @Override   public void computeScroll() {     // 調(diào)用startScroll的時(shí)候scroller.computeScrollOffset()返回true,     if (mScroller.computeScrollOffset()) {       mParentView.scrollTo(mScroller.getCurrX(), mScroller.getCurrY());       postInvalidate();        if (mScroller.isFinished()) {          if (onSildingFinishListener != null && isFinish) {           onSildingFinishListener.onSildingFinish();         }       }     }   }       public interface OnSildingFinishListener {     public void onSildingFinish();   }  } 

我們?cè)趏nLayout()方法中利用getParent()方法獲取該布局的父布局和獲取其控件的寬度,主要是為之后的實(shí)現(xiàn)做準(zhǔn)備工作。
我們的滑動(dòng)邏輯主要是利用View的scrollBy() 方法, scrollTo()方法和Scroller類來實(shí)現(xiàn)的,當(dāng)手指拖動(dòng)視圖的時(shí)候,我們監(jiān)聽手指在屏幕上滑動(dòng)的距離利用View的scrollBy() 方法使得View隨著手指的滑動(dòng)而滑動(dòng),而當(dāng)手指離開屏幕,我們?cè)诟鶕?jù)邏輯使用Scroller類startScroll()方法設(shè)置滑動(dòng)的參數(shù),然后再根據(jù)View的scrollTo進(jìn)行滾動(dòng)。
對(duì)于View的滑動(dòng),存在一些Touch事件消費(fèi)的處理等問題,因此我們需要對(duì)View的整個(gè)Touch事件很熟悉 ,最主要的就是Activity里面有一些ListView、 GridView、ScrollView等控件了, 假如我們Activity里面存在ListView、GridView等控件的話,我們對(duì)Activity的最外層布局進(jìn)行滾動(dòng)根本就無效果,因?yàn)門ouch事件被ListView、GridView等控件消費(fèi)了,所以Activity的最外層布局根本得不到Touch事件,也就實(shí)現(xiàn)不了Touch邏輯了,所以為了解決此Touch事件問題我提供了setTouchView(View touchView) 方法,這個(gè)方法是將Touch事件動(dòng)態(tài)的設(shè)置到到View上面,所以針對(duì)上面的問題,我們將OnTouchListener直接設(shè)置到ListView、GridView上面,這樣子就避免了Activity的最外層接受不到Touch事件的問題了

接下來看onTouch()方法
首先我們?cè)贏CTION_DOWN記錄按下點(diǎn)的X,Y坐標(biāo)
然后在ACTION_MOVE中判斷,如果我們?cè)谒椒较蚧瑒?dòng)的距離大于mTouchSlop并且在豎直方向滑動(dòng)的距離小于mTouchSlop,表示Activity處于滑動(dòng)狀態(tài),我們判斷如果touchView是ListView、GridView或者其子類的時(shí)候,因?yàn)槲覀兪种冈贚istView、GridView上面,伴隨著item的點(diǎn)擊事件的發(fā)生,所以我們對(duì)touchView設(shè)置ACTION_CANCEL來取消item的點(diǎn)擊事件,然后對(duì)該布局的父布局調(diào)用scrollBy()進(jìn)行滾動(dòng),并且如果TouchView是AbsListView或者ScrollView直接返回true,來取消AbsListView或者ScrollView本身的ACTION_MOVE事件,最直觀的感受就是我們?cè)诨瑒?dòng)Activity的時(shí)候,禁止AbsListView或者ScrollView的上下滑動(dòng)
最后在ACTION_UP中判斷如果手指滑動(dòng)的距離大于控件長(zhǎng)度的二分之一,表示將Activity滑出界面,否則滑動(dòng)到起始位置,我們利用Scroller類的startScroll()方法設(shè)置好開始位置,滑動(dòng)距離和時(shí)間,然后調(diào)用postInvalidate()刷新界面,之后就到computeScroll()方法中,我們利用scrollTo()方法對(duì)該布局的父布局進(jìn)行滾動(dòng),滾動(dòng)結(jié)束之后,我們判斷界面是否滑出界面,如果是就調(diào)用OnSildingFinishListener接口的onSildingFinish()方法,所以只要在onSildingFinish()方法中finish界面就行了
整個(gè)滑動(dòng)布局的代碼就是這個(gè)樣子,接下來我們就來使用了,主界面Activity只有三個(gè)按鈕,分別跳轉(zhuǎn)到普通布局的Activity,有ListView的Activity和有ScrollView的Activity中

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:tools="http://schemas.android.com/tools"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:gravity="center"   android:orientation="vertical" >    <Button     android:id="@+id/normal_activity"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:text="普通的Activity" />    <Button     android:id="@+id/absListview_activity"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:text="有AbsListView的Activity" />    <Button     android:id="@+id/scrollview_activity"     android:layout_width="match_parent"     android:layout_height="wrap_content"     android:text="有ScrollView的Activity" />  </LinearLayout> 

 
然后就是MainActivity的代碼,根據(jù)ID實(shí)例化Button,然后為Button設(shè)置OnClickListener事件,不同的按鈕跳轉(zhuǎn)到不同的Activity,然后設(shè)置從右向左滑動(dòng)的動(dòng)畫,重寫onBackPressed()方法,當(dāng)我們按下手機(jī)物理鍵盤的返回鍵,添加從左向右滑出的動(dòng)畫

package com.example.slidingfinish;  import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.view.Window; import android.widget.Button;  import com.example.slidingfinish.R;  public class MainActivity extends Activity implements OnClickListener {    @Override   protected void onCreate(Bundle savedInstanceState) {     requestWindowFeature(Window.FEATURE_NO_TITLE);     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_main);      Button mButtonNormal = (Button) findViewById(R.id.normal_activity);     mButtonNormal.setOnClickListener(this);      Button mButtonAbs = (Button) findViewById(R.id.absListview_activity);     mButtonAbs.setOnClickListener(this);      Button mButtonScroll = (Button) findViewById(R.id.scrollview_activity);     mButtonScroll.setOnClickListener(this);    }    @Override   public void onClick(View v) {     Intent mIntent = null;     switch (v.getId()) {     case R.id.normal_activity:       mIntent = new Intent(MainActivity.this, NormalActivity.class);       break;     case R.id.absListview_activity:       mIntent = new Intent(MainActivity.this, AbsActivity.class);       break;     case R.id.scrollview_activity:       mIntent = new Intent(MainActivity.this, ScrollActivity.class);       break;     }      startActivity(mIntent);     overridePendingTransition(R.anim.base_slide_right_in, R.anim.base_slide_remain);   }      //Press the back button in mobile phone   @Override   public void onBackPressed() {     super.onBackPressed();     overridePendingTransition(0, R.anim.base_slide_right_out);   }  } 

在這里我之貼出含有ListView的Activity的代碼,先看布局,我們自定義滑動(dòng)布局SildingFinishLayout應(yīng)該放在XML的最頂層

<?xml version="1.0" encoding="UTF-8"?> <com.example.view.SildingFinishLayout xmlns:android="http://schemas.android.com/apk/res/android"   xmlns:tools="http://schemas.android.com/tools"   android:id="@+id/sildingFinishLayout"   android:layout_width="match_parent"   android:layout_height="match_parent"   android:background="#556677" >    <ListView     android:id="@+id/listView"     android:cacheColorHint="@android:color/transparent"     android:layout_width="match_parent"     android:layout_height="match_parent" >   </ListView>       </com.example.view.SildingFinishLayout> 
package com.example.slidingfinish;  import java.util.ArrayList; import java.util.List;  import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.Window; import android.widget.AdapterView; import android.widget.AdapterView.OnItemClickListener; import android.widget.ArrayAdapter; import android.widget.ListView;  import com.example.slidingfinish.R; import com.example.view.SildingFinishLayout; import com.example.view.SildingFinishLayout.OnSildingFinishListener;  public class AbsActivity extends Activity {   private List<String> list = new ArrayList<String>();    @Override   protected void onCreate(Bundle savedInstanceState) {     requestWindowFeature(Window.FEATURE_NO_TITLE);     super.onCreate(savedInstanceState);     setContentView(R.layout.activity_abslistview);      for (int i = 0; i <= 30; i++) {       list.add("測(cè)試數(shù)據(jù)" + i);     }      ListView mListView = (ListView) findViewById(R.id.listView);     ArrayAdapter<String> adapter = new ArrayAdapter<String>(         AbsActivity.this, android.R.layout.simple_list_item_1, list);     mListView.setAdapter(adapter);      SildingFinishLayout mSildingFinishLayout = (SildingFinishLayout) findViewById(R.id.sildingFinishLayout);     mSildingFinishLayout         .setOnSildingFinishListener(new OnSildingFinishListener() {            @Override           public void onSildingFinish() {             AbsActivity.this.finish();           }         });      // touchView要設(shè)置到ListView上面     mSildingFinishLayout.setTouchView(mListView);      mListView.setOnItemClickListener(new OnItemClickListener() {        @Override       public void onItemClick(AdapterView<?> parent, View view,           int position, long id) {          startActivity(new Intent(AbsActivity.this, NormalActivity.class));         overridePendingTransition(R.anim.base_slide_right_in,             R.anim.base_slide_remain);       }     });   }    // Press the back button in mobile phone   @Override   public void onBackPressed() {     super.onBackPressed();     overridePendingTransition(0, R.anim.base_slide_right_out);   }  } 

利用ID找到SildingFinishLayout實(shí)例,利用setTouchView()方法設(shè)置touchView到ListView上面,然后調(diào)用setOnSildingFinishListener()設(shè)置OnSildingFinishListener,在onSildingFinish()中finish界面就可以啦。
在運(yùn)行項(xiàng)目之前還有一個(gè)很重要的操作,也是之前我被卡到的問題,就是我們需要對(duì)Activity設(shè)置為透明,即設(shè)置主題android:theme="@android:style/Theme.Translucent"

<activity       android:name=".AbsActivity"       android:theme="@android:style/Theme.Translucent" >     </activity>     <activity       android:name=".NormalActivity"       android:theme="@android:style/Theme.Translucent" >     </activity>     <activity       android:name=".ScrollActivity"       android:theme="@android:style/Theme.Translucent" >     </activity> 

 
好了,現(xiàn)在我們可以運(yùn)行項(xiàng)目看看效果啦

正是我們想要的效果,如果想要加入滑動(dòng)切換界面的效果只需要三步就行了,首先將Activity布局的最外層修改為SildingFinishLayout,然后在Activity里面調(diào)用setTouchView()方法設(shè)置touchView,設(shè)置OnSildingFinishListener監(jiān)聽在onSildingFinish()方法中finish界面,最后設(shè)置Activity的背景為透明(不是設(shè)置Activity布局文件的最頂層布局背景顏色透明,這點(diǎn)要區(qū)分一下)是不是很方便呢?好了,今天的講解到這里就結(jié)束了~

發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
日本一线产区和二线产区| 日本免费一区二区三区等视频| 在线免费av观看| 97久久精品人人爽人人爽蜜臀| 日韩亚洲欧美综合| 欧美另类videosbest视频| 欧美激情一区二区三区四区| 色狠狠综合天天综合综合| 国产精品久久一区二区三区不卡| 丁香婷婷在线观看| 在线观看18视频网站| 国产又粗又长视频| 久久久久久综合| 国产精品美女xx| xxxx黄色| 国产精品扒开做爽爽爽的视频| 奇米视频888战线精品播放| 国产精品卡一卡二| 好吊妞视频一区二区三区| 欧美男gay| 国产亚洲精品美女| 免费看h的网站| 欧美一区视频在线| 国产精品久久久久桃色tv| 在线视频中文亚洲| 成年人黄视频在线观看| 免费看污黄网站| 久久精品小视频| 中文字幕在线看精品乱码| 亚洲国产中文在线二区三区免| www.欧美国产| 天天夜碰日日摸日日澡性色av| 欧美人与禽zozo性伦| 日本午夜在线| 国产精品久久久久永久免费观看| 伊人久久大香线蕉成人综合网| 在线观看免费版| 国产精品yjizz视频网一二区| 国产成人va亚洲电影| 偷窥自拍亚洲色图| 欧美日韩国产免费一区二区| 国产视频在线免费观看| 国产精品美女999| 亚洲另类xxxx| 视频一区二区三区在线观看| 美女国产精品| 日韩欧美伦理电影院| 国产一区二区福利| 国内精品视频| 国产特黄级aaaaa片免| 精品久久一区| 日韩电影在线观看完整版| 国产一区二区丝袜| 久久亚洲一区二区三区四区| 91网站在线看| 英国三级经典在线观看| 97人人爽人人爽人人爽| 欧美日本韩国一区| 99久久精品国产亚洲| 五月激情婷婷综合| 欧美日韩国产一区中文午夜| 伊人久久大香线蕉av一区| 牛人国产偷窥女洗浴在线观看| 国产精品v日韩精品v欧美精品网站| 一本一道波多野毛片中文在线| 欧美放荡的少妇| 中文精品一区二区| 国内一区二区视频| 老司机亚洲精品一区二区| 91精品在线观看视频| 日韩成人中文字幕| 神宫寺奈绪一区二区三区| 国产一区二区三区视频免费| 国产亚洲色婷婷久久99精品91| 北岛玲日韩精品一区二区三区| 国产欧美一区二区三区沐欲| 日韩va欧美va亚洲va久久| 亚洲色成人www永久网站| 亚洲精品之草原avav久久| 国产资源在线看| 91av一区二区三区| 久久午夜精品视频| 天天视频一区二区三区| 欧美乱妇23p| 国产成人无码精品久久久性色| 欧美一区三区三区高中清蜜桃| 蜜臀视频在线观看| 亚洲激情在线| 亚洲电影第三页| 免费国产在线精品一区二区三区| 婷婷成人激情在线网| 暖暖视频日本免费| 国产精品日韩av| √天堂中文在线| 黄页网址大全在线播放| 先锋影音资源综合在线播放av| 国产在线观看91一区二区三区| 国产一区二区免费看| 国产精品www色诱视频| 亚欧在线免费观看| mm131美女视频| 国产精品沙发午睡系列| 97碰碰碰免费色视频| 中文字幕在线视频精品| 久久激情五月丁香伊人| 国产精品av免费在线观看| 青草青青在线视频| 99久久精品久久亚洲精品| 激情五月婷婷在线| 日本免费网站视频| 亚洲一区二区三区精品动漫| 超碰色偷偷男人的天堂| 女人扒开双腿让男人捅| 欧美毛片又粗又长又大| 男人揉女人奶房视频60分| 亚洲欧美制服综合另类| 最近中文在线观看| 蜜桃传媒一区二区亚洲| 欧美一区二区三区色| 四虎影视成人永久免费观看视频| 91在线观看入口| 中文字幕av在线免费观看| 成人黄色a级片| 97在线观看视频| 成人羞羞国产免费图片| 国产精品一区二区免费| 韩国中文字幕在线| 免费视频网站在线观看入口| 亚洲色图偷拍视频| 欧美韩国一区二区| 日韩一区二区免费电影| 中文字幕中文字幕在线中心一区| 6080午夜| 欧美激情成人在线| 9i看片成人免费高清| 国产视频精品视频| 久久综合999| 精品动漫3d一区二区三区免费版| 国产一区二区在线| 国产黄在线观看| 在线视频亚洲自拍| h视频在线观看免费网站| 久久精品国产99国产精品| 性生活免费在线观看| 中文字幕在线观看日| 亚洲精品自在在线观看| 国产精品一区二区三区精品| xxx国产精品| 激情亚洲另类图片区小说区| 91精品久久久久久粉嫩| 亚洲熟妇无码一区二区三区| 亚洲欧美综合精品久久成人| 色婷婷亚洲综合| 国产一区二区三区视频| 性欧美video另类hd尤物| 国产一区二区视频在线观看免费| 男人添女人下部高潮视频在线观看| 国内精品国产三级国产在线专| 综合激情网...| 成视频年人免费看黄网站| 国产精彩视频在线观看| 在线不卡中文字幕| 国产91在线播放| 激情欧美一区二区三区黑长吊| 一区二区三区四区五区精品| 日本调教视频在线观看| 欧美成人自拍视频| 久久草视频在线| 久久精品国产精品亚洲精品色| 欧美日韩美女在线观看| 精品一区二区在线播放| 精品国产乱码91久久久久久网站| 精品无人区一区二区三区| 日韩三级一区| 国产suv精品一区二区三区88区| 一区视频免费观看| 日韩av网址在线| 国产99久久九九精品无码免费| 99久久国产综合精品色伊| 日本精品一二三| 日韩一区日韩二区| av女同在线| 中文字幕国内自拍| 卡一卡2卡三精品| 久久99国产综合精品女同| 国产精品亚洲一区二区在线观看| 亚洲欧洲国产综合| 日本伦理一区二区三区| 亚洲三级国产| 欧美日韩国产综合一区二区| 24小时免费看片在线观看| 国内成+人亚洲+欧美+综合在线| 亚洲精品在线观看91| av先锋影音资源站| 香蕉视频一区二区| 成人午夜国产福到在线| 精品国产制服丝袜高跟| 噜噜噜久久亚洲精品国产品小说| 91欧美一区二区| 好吊色一区二区三区| 中文字幕免费视频| 国产熟女一区二区三区四区| 欧美日韩三区四区| 亚洲国产天堂| 写真福利片hd在线观看| 97最新国自产拍视频在线完整在线看| 日韩精品视频免费在线观看| 99re在线视频这里只有精品| 三级国产在线观看| 国产综合激情| 一区二区三区视频免费观看| 伊人av电影| 德国性xxxx| 国产精品入口麻豆九色| 国产精品丝袜久久久久久消防器材| 国产亚洲成人精品| 天天久久人人| 欧美孕妇毛茸茸xxxx| 亚洲丶国产丶欧美一区二区三区| 日韩一区国产在线观看| 羞羞的视频免费| 99精品国产在热久久婷婷| 成人在线观看免费播放| 青青在线视频免费观看| 色之综合天天综合色天天棕色| 97视频免费在线| 奇米亚洲午夜久久精品| 国产va免费精品高清在线| 一区2区3区在线看| 日本中文字幕一区二区有限公司| 国产精品99一区二区三区| 亚洲欧洲美洲综合色网| 男人天堂a在线| 欧美日韩国产综合视频在线观看中文| www.超碰在线观看| 亚洲av无码精品一区二区| 青青操在线观看| 国产日韩换脸av一区在线观看| 黄色片免费观看视频| 欧美日韩一区二区不卡| 日韩精品电影一区二区| 久久久久久久久久久国产| 精品国产91久久久久久老师| 亚洲毛片aa| 日本在线播放视频| 黄页网站在线| 亚洲精品美女91| 国产色播av在线| 欧美日韩高清一区二区三区| 天堂av在线8| 国产综合网站| 无码专区aaaaaa免费视频| 天海翼视频在线观看| 国产xxx在线| 欧美激情2020午夜免费观看| 国产一区二区影院| 无码精品黑人一区二区三区| 久久99精品久久久水蜜桃| 一本一本久久a久久精品综合麻豆| 91深夜福利| 羞羞网站在线| 天堂一区二区在线免费观看| 黄色一二三区| 国产毛片久久久久久久| 国产精品私拍pans大尺度在线| 91视频免费在线观看| 亚洲精品久久区二区三区蜜桃臀| 日韩av电影在线免费播放| 九九热播视频在线精品6| 夜夜骑天天干| 一区二区在线视频播放| 精品99久久| 国产美女视频一区二区二三区| 少妇精品高潮欲妇又嫩中文字幕| 国产成人福利视频| 看片网址国产福利av中文字幕| 国产原创av在线| 成人黄色中文字幕| www.爱久久.com| 人人做人人爽| 手机福利视频欧美| 色屁屁www国产馆在线观看| av在线亚洲天堂| 日漫免费在线观看网站| 69精品丰满人妻无码视频a片| 久久99国产综合精品女同| 视频区 图片区 小说区| 屁屁影院在线观看| 盗摄精品av一区二区三区| 人体久久天天| 五十路在线观看| 久久综合久久99| 飘雪影院手机免费高清版在线观看| 成人免费黄色在线| 欧美精品尤物在线观看| 996这里只有精品| 真人抽搐一进一出视频| 一本色道综合久久欧美日韩精品| 日韩一区二区电影在线观看| 日韩免费在线电影| 国产不卡网站| 在线一区视频| 成人黄18免费网站| 国产盗摄精品一区二区酒店| 538在线精品| 激情偷乱视频一区二区三区| 男人的天堂亚洲在线| 欧美亚洲免费在线| 欧美午夜电影网| 中文在线天堂库| 亚洲欧美日韩国产yyy| 免费成人在线影院| 欧美极品少妇无套实战| 怡红院成永久免费人全部视频| 二区三区四区高清视频在线观看| 亚洲色图14p| 成人免费在线视频网站| 国产精品国产三级国产aⅴ入口| 狠狠狠综合7777久夜色撩人| xxx欧美xxx| 国产黄色三级网站| 男人透女人免费视频| 色综合天天爱| 国产精品久久久久久久久久东京| 午夜精品免费在线观看| 久久网中文字幕| 国产模特av私拍大尺度| 男女啪啪无遮挡|