日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Github项目解析(九)--实现Activity跳转动画的五种方式

發布時間:2025/3/20 编程问答 17 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Github项目解析(九)--实现Activity跳转动画的五种方式 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

2019獨角獸企業重金招聘Python工程師標準>>>

版權聲明:本文為博主原創文章,未經博主允許不得轉載。

轉載請標明出處:一片楓葉的專欄

上一篇文章中我們講解了在Activity啟動過程中獲取組件寬高的五種方式。在Activity的啟動過程中如果我們直接在生命周期方法中通過view.getWidth()或者是view.getHeight()方法獲取組件的寬度和高度其結果都是0,為什么會出現這個問題呢?

其實看過我以前寫過的Activity啟動流程??Activity布局加載流程??Activity布局繪制流程??的同學應該對Activity的啟動流程和其布局加載繪制流程不陌生,Activity的啟動流程和Activity的布局文件加載繪制流程,其實沒有相關的關系的,其實兩個異步的加載流程,這樣我們在Activity的onCreate或者是onResume方法中調用textView.getHeight()或者是textView.getWidth()方法的時候,Activity對應的組件并沒有執行完繪制流程,因此此時獲取到的組件的寬高都是默認的0,所以這時候通過getWidth()和getHeight()方法也就是無法獲取組件的寬和高了。

更多關于在Activity啟動過程中獲取組件寬高的知識,可參考我的:Activity啟動過程中獲取組件寬高的N種方式

文本中我們將講解activity切換動畫相關的知識點,這里的切換動畫指的是是activity跳轉時的動畫效果。這里總結了一下,有五種方式實現activity切換時實現動畫效果。下面我將依次介紹一下每種實現activity切換動畫效果的實現方式。

在介紹activity的切換動畫之前我們先來說明一下實現切換activity的兩種方式:

  • 調用startActivity方法啟動一個新的Activity并跳轉其頁面

  • 調用finish方法銷毀當前的Activity返回上一個Activity界面

當調用startActivity方法的時候啟動一個新的activity,這時候就涉及到了舊的Activity的退出動畫和新的Activity的顯示動畫;?
當調用finish方法的時候,銷毀當前Acitivity,就涉及到了當前Activity的退出動畫和前一個Activity的顯示動畫;

所以我們的activity跳轉動畫是分為兩個部分的:一個Activity的銷毀動畫與一個Activity的顯示動畫,明白了這一點之后我們開始看一下第一種實現Activity跳轉動畫的方式:通過overridePendingTransition方法實現Activity切換動畫。

(一)使用overridePendingTransition方法實現Activity跳轉動畫

overridePendingTransition方法是Activity中提供的Activity跳轉動畫方法,通過該方法可以實現Activity跳轉時的動畫效果。下面我們就將通過一個簡單的例子看一下如何通過overridePendingTransition方法實現Activity的切換動畫。

demo例子中我們實現了Activity a中有一個點擊按鈕,點擊按鈕實現跳轉Activity b的邏輯,具體代碼如下:

/*** 點擊按鈕實現跳轉邏輯*/ button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {/*** 在調用了startActivity方法之后立即調用overridePendingTransition方法*/Intent intent = new Intent(MainActivity.this, SecondActivity.class);startActivity(intent);overridePendingTransition(R.anim.slide_in_left, R.anim.slide_in_left);}});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

可以看到我們在調用了startActivity方法之后又執行了overridePendingTransition方法,而在overridePendingTransition方法中傳遞了兩個動畫布局文件,我們首先看一下這里的動畫文件具體是怎么實現的:

<?xml version="1.0" encoding="utf-8"?> <set xmlns:Android="http://schemas.Android.com/apk/res/Android"Android:shareInterpolator="false"Android:zAdjustment="top"><translateAndroid:duration="200"Android:fromXDelta="-100.0%p"Android:toXDelta="0.0" /> </set>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

這里的overridePendingTransition方法傳遞的是兩個動畫文件id,第一個參數是需要打開的Activity進入時的動畫,第二個參數是需要關閉的Activity離開時的動畫。這樣我們執行了這段代碼之后在跳轉Activity的時候就展示了動畫效果:?

動畫的效果是通過overridePendingTransition方法實現的,那么下面我們來看一下overridePendingTransition方法的定義,我們在overridependingTransition方法在定義的時候有這樣的一段注釋說明:

/*** Call immediately after one of the flavors of {@link #startActivity(Intent)}* or {@link #finish} to specify an explicit transition animation to* perform next.*//*** @param enterAnim A resource ID of the animation resource to use for* the incoming activity. Use 0 for no animation.* @param exitAnim A resource ID of the animation resource to use for* the outgoing activity. Use 0 for no animation.*/
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

好吧,這段注釋,告訴通過注釋我們能夠知道:

  • overridePendingTransition方法需要在startAtivity方法或者是finish方法調用之后立即執行

  • 參數enterAnim表示的是從Activity a跳轉到Activity b,進入b時的動畫效果

  • 參數exitAnim表示的是從Activity a跳轉到Activity b,離開a時的動過效果

  • 若進入b或者是離開a時不需要動畫效果,則可以傳值為0

好吧,本著批判的精神,我們來看一下是不是這樣的,首先看一下如果我們在startActivity方法調用之后不立即執行overridePendingTransition方法,會有動畫效果么?

若我們將overridePendingTransition延時1s執行呢?

/*** 點擊按鈕實現跳轉邏輯*/ button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, SecondActivity.class);startActivity(intent);overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);/*** 延時1s執行overridePendingTransition方法*/button1.postDelayed(new Runnable() {@Overridepublic void run() {overridePendingTransition(R.anim.slide_in_top, R.anim.slide_in_top);}}, 1000);}});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

好吧,執行之后我們能夠發現跳轉動畫沒有了,所以overridePendingTransition只能在startActivity或者是finish方法之后執行。

還有一個問題,如果是在startActivity之后執行,只是在子線程中執行呢?activity的跳轉動畫能夠執行么?

/*** 點擊按鈕實現跳轉邏輯*/ button1.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, SecondActivity.class);startActivity(intent);overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);/*** 在子線程中執行overridePendingTransition方法*/new Thread(new Runnable() {@Overridepublic void run() {overridePendingTransition(R.anim.slide_in_left, R.anim.slide_out_left);}}).start();}});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21

好吧,你沒有猜錯,activity的切換效果還是執行,也就是說overridePendingTransition方法也是可以在子線程中執行的,當然這并沒什么卵用。

好吧,在介紹完了使用overridePendingTransition方法實現Activity切換動畫之后我們下面看一下使用style的方式定義實現Activity的切換動畫。

(二)使用style的方式定義Activity的切換動畫

(1)定義Application的style

<!-- 系統Application定義 --> <applicationAndroid:allowBackup="true"Android:icon="@mipmap/ic_launcher"Android:label="@string/app_name"Android:supportsRtl="true"Android:theme="@style/AppTheme">
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

(2)定義具體的AppTheme樣式

其中這里的windowAnimationStyle就是我們定義Activity切換動畫的style。而@anim/slide_in_top就是我們定義的動畫文件,也就是說通過為Appliation設置style,然后為windowAnimationStyle設置動畫文件就可以全局的為Activity的跳轉配置動畫效果。

<!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="Android:windowAnimationStyle">@style/activityAnim</item></style><!-- 使用style方式定義activity切換動畫 --><style name="activityAnim"><item name="Android:activityOpenEnterAnimation">@anim/slide_in_top</item><item name="Android:activityOpenExitAnimation">@anim/slide_in_top</item></style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

而在windowAnimationStyle中存在四種動畫:

activityOpenEnterAnimation // 用于設置打開新的Activity并進入新的Activity展示的動畫 activityOpenExitAnimation // 用于設置打開新的Activity并銷毀之前的Activity展示的動畫 activityCloseEnterAnimation // 用于設置關閉當前Activity進入上一個Activity展示的動畫 activityCloseExitAnimation // 用于設置關閉當前Activity時展示的動畫
  • 1
  • 2
  • 3
  • 4
  • 1
  • 2
  • 3
  • 4

(3)測試代碼,實現activity切換操作

/*** 點擊按鈕,實現Activity的跳轉操作* 通過定義style的方式實現activity的跳轉動畫*/button2.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {/*** 普通的Intent跳轉Activity實現*/Intent intent = new Intent(MainActivity.this, SecondActivity.class);startActivity(intent);}});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

這時候我們我們執行diamante邏輯之后就能發現activity在切換的時候出現了動畫效果,說明我們設置的style起作用了。

(三)使用ActivityOptions切換動畫實現Activity跳轉動畫

上面我們講解的通過overridePendingTransition方法基本上可以滿足我們日常中對Activity跳轉動畫的需求了,但是MD風格出來之后,overridePendingTransition這種老舊、生硬的方式怎么能適合我們的MD風格的App呢?好在google在新的sdk中給我們提供了另外一種Activity的過度動畫——ActivityOptions。并且提供了兼容包——ActivityOptionsCompat。ActivityOptionsCompat是一個靜態類,提供了相應的Activity跳轉動畫效果,通過其可以實現不少炫酷的動畫效果。

(1)在跳轉的Activity中設置contentFeature

@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);// 設置contentFeature,可使用切換動畫getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);Transition explode = TransitionInflater.from(this).inflateTransition(Android.R.transition.explode);getWindow().setEnterTransition(explode);setContentView(R.layout.activity_three);}
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

這里我們在Activity的setContentView之前調用了:

getWindow().requestFeature(Window.FEATURE_CONTENT_TRANSITIONS);
  • 1
  • 1

方法,看過我的Activity布局加載流程的同學應該知道,這里的setFeature就是為activity的窗口設置特性,不同的特性對應不同的布局方式,比如可以設置無toolbar模式,有toolbar模式等等。而這里設置的是需要過渡動畫,并且我們獲取了Android中內置的explode動畫,并設值給了Activity的window窗口對象,這樣當Activity被啟動的時候就會執行explode所帶便的動畫效果了。

(2)在startActivity執行跳轉邏輯的時候調用startActivity的重寫方法,執行ActivityOptions.makeSceneTransitionAnimation方法

/*** 點擊按鈕,實現Activity的跳轉操作* 通過Android5.0及以上代碼的方式實現activity的跳轉動畫*/button3.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, ThreeActivity.class);startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());}});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

這里我們調用了startActivity的重載方法:

public void startActivity(Intent intent, @Nullable Bundle options)
  • 1
  • 1

并且我們傳入了ActivityOptions.makeSceneTransitionAnimation,該方法表示將Activity a平滑的切換到Activity b,其還有幾個重載方法可以指定相關的View,即以View為焦點平滑的從Activity a切換到Activity b。

調用這段代碼之后我們activity跳轉的時候就展示出了動畫效果。?

(四)使用ActivityOptions之后內置的動畫效果通過style的方式

這種方式其實就是通過style的方式展示和使用ActivityOptions過度動畫,下面是實現通過定義style方式定義過度動畫的步驟:

(1)編寫過度動畫文件

<explode xmlns:Android="http://schemas.Android.com/apk/res/Android"Android:duration="300" />
  • 1
  • 2
  • 1
  • 2

首先我們需要在Application項目res目錄下新建一個transition目錄,然后創建資源文件,然后使用這些系統自帶的過渡動畫效果,這里設置了過度時長為300ms。

(2)定義style文件

<!-- Base application theme. --><style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"><!-- Customize your theme here. --><item name="colorPrimary">@color/colorPrimary</item><item name="colorPrimaryDark">@color/colorPrimaryDark</item><item name="colorAccent">@color/colorAccent</item><item name="Android:windowEnterTransition">@transition/activity_explode</item><item name="Android:windowExitTransition">@transition/activity_explode</item></style>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

在Application的style文件中添加:

<item name="Android:windowEnterTransition">@transition/activity_explode</item><item name="Android:windowExitTransition">@transition/activity_explode</item>
  • 1
  • 2
  • 1
  • 2

并指定過渡動畫效果為我們剛剛定義的過渡動畫文件。

(3)執行跳轉邏輯

/*** 點擊按鈕,實現Activity的跳轉操作* 通過Android5.0及以上style的方式實現activity的跳轉動畫*/button4.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {/*** 調用ActivityOptions.makeSceneTransitionAnimation實現過度動畫*/Intent intent = new Intent(MainActivity.this, FourActivity.class);startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this).toBundle());}});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14

這樣執行之后也可以展示出Activity跳轉過度動畫了,其和通過代碼方式實現的效果是類似的,而且這種動畫效果是全局的。

(五)使用ActivityOptions動畫共享組件的方式實現跳轉Activity動畫

這里的共享組件動畫效果是指將前面一個Activity的某個子View與后面一個Activity的某個子View之間有過渡效果,即在這種過度效果下實現Activity的跳轉操作。那么如何實現兩個組件View之間實現過渡效果呢?

(1)定義共享組件

在Activity a中的button按鈕點擊transitionName屬性:

<ButtonAndroid:id="@+id/button5"Android:layout_width="match_parent"Android:layout_height="wrap_content"Android:layout_below="@+id/button4"Android:layout_marginTop="10dp"Android:layout_marginRight="10dp"Android:layout_marginLeft="10dp"Android:text="組件過度動畫"Android:background="@color/colorPrimary"Android:transitionName="shareNames"/>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

在Activity b的布局文件中為組件定義transitionName屬性,這樣這兩個組件相當于有了過度對應關系,這里需要注意的是這兩個組件的transitionName屬性的值必須是相同的。

<?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:Android="http://schemas.Android.com/apk/res/Android"Android:id="@+id/activity_second"Android:layout_width="match_parent"Android:layout_height="match_parent"Android:gravity="center_horizontal"Android:orientation="vertical"Android:transitionName="shareNames"><TextViewAndroid:layout_width="match_parent"Android:layout_height="match_parent"Android:background="@color/colorAccent"Android:layout_marginTop="10dp"Android:layout_marginBottom="10dp"/></LinearLayout>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20

(2)調用startActivity執行跳轉動畫

/*** 點擊按鈕,實現Activity的跳轉操作* 通過Android5.0及以上共享組件的方式實現activity的跳轉動畫*/button5.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, FiveActivity.class);startActivity(intent, ActivityOptions.makeSceneTransitionAnimation(MainActivity.this, button5, "shareNames").toBundle());}});
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

需要說明的是這里調用的ActivityOptions.makeSceneTransitionAnimation方法,傳遞了三個參數,其中第一個參數為context對象,第二個參數為啟動Activity的共享組件,第三個參數為啟動Activity的共享組件transitionName屬性值。

這樣經過調用之后我們就實現了從Activity a跳轉到Activity b的時候a中的組件到b中組件的過度效果。?

總結:

  • 本文主要講解了通過overridePendingTransition方式和ActivityOptions動畫API實現Activity的切換動畫效果;

  • overridePendingTransition方法從Android2.0開始,基本上能夠覆蓋我們activity跳轉動畫的需求;

  • ActivityOptions API是在Android5.0開始的,可以實現一些炫酷的動畫效果,更加符合MD風格;

  • ActivityOptions還可以實現兩個Activity組件之間的過度動畫;

  • 本項目例子已上傳待github中,歡迎star和follow,項目地址:實現activity跳轉動畫的五種方式


另外對github項目,開源項目解析感興趣的同學可以參考我的:?
Github項目解析(一)–>上傳Android項目至github?
Github項目解析(二)–>將Android項目發布至JCenter代碼庫?
Github項目解析(三)–>Android內存泄露監測之leakcanary?
Github項目解析(四)–>動態更改TextView的字體大小?
Github項目解析(五)–>Android日志框架?
Github項目解析(六)–>自定義實現ButterKnife框架?
Github項目解析(七)–>防止按鈕重復點擊?
Github項目解析(八)–>Activity啟動過程中獲取組件寬高的五種方式

18

?

0

轉載于:https://my.oschina.net/u/1177694/blog/1507317

與50位技術專家面對面20年技術見證,附贈技術全景圖

總結

以上是生活随笔為你收集整理的Github项目解析(九)--实现Activity跳转动画的五种方式的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 青少年xxxxx性开放hg | 婷婷免费 | 森林影视官网在线观看 | 欧美三级在线视频 | 国产一区二区三区精品愉拍 | 国产福利一区二区 | 快色在线观看 | 毛片在线不卡 | 四虎www| 伊人久久青青草 | 重囗味sm一区二区三区 | 黄色a一片 | 农村搞破鞋视频大全 | 午夜寂寞影院在线观看 | 国产欧美高清 | 一级黄色片免费播放 | 天天色综合久久 | 色爱综合区 | 波波野结衣| 男女男精品视频站 | chinese xxxx videos andvr | 91免费看片 | 色女孩综合网 | 成年人免费高清视频 | 99国产精品久久久久久久久久久 | 亚洲av日韩av不卡在线观看 | 老司机深夜视频 | 在线免费视频一区二区 | 久热精品视频在线观看 | 性高跟丝袜xxxxhd | 亚洲美女一区二区三区 | 操碰在线视频 | 午夜精品久久久久久久 | 日韩岛国片 | 人妻精品久久久久中文字幕69 | 日韩欧美亚洲综合 | 超碰免费看 | 一区二区三区在线免费观看视频 | 人妻中文字幕一区 | 亚洲中文字幕无码专区 | 韩国久久精品 | 99免费在线观看视频 | 99re8在线精品视频免费播放 | 久久久久久久久久久久97 | 日本a级大片| 色狠av | 日本精品视频在线播放 | 欧美黑人一区 | av剧情在线 | 国产区精品在线观看 | 成人午夜精品 | 亚洲人成在线免费观看 | 亚州一二区 | 69中国xxxxxxxxx96| 国产亚洲色婷婷久久99精品91 | 久操亚洲 | 蜜臀av免费一区二区三区水牛 | 亚洲一区二区动漫 | 久久色在线视频 | 999zyz玖玖资源站永久 | 图片区 小说区 区 亚洲五月 | 四虎国产精品永久在线国在线 | 国产成人看片 | 中文字幕乱码人妻无码久久 | 粉色午夜视频 | 欧美啪视频 | 久久久久国产一区二区三区 | 日本三级一区二区三区 | 色多多在线视频 | 音影先锋av资源 | 国产一区二区三区精品视频 | 国产www视频 | 亚洲国产天堂 | 国产精品久久久久久一区二区三区 | 日韩在线视频免费看 | 婷婷久久综合网 | 国产又粗又猛又爽又黄的视频一 | 亚洲av无码一区二区三区dv | 被灌满精子的波多野结衣 | 91好色先生| 久久99国产精品成人 | 久草国产在线观看 | 狠狠躁狠狠躁视频专区 | 中文字幕一二三区 | 性开放耄耋老妇hd | 欧洲美女av| 超级碰在线视频 | 男女无遮挡做爰猛烈视频 | 欧美女优在线 | 成人一区二区三区仙踪林 | 亚洲精品久久久中文字幕 | 91超碰在线免费观看 | 日b视频在线观看 | 亚洲一线av | 国产精品久久久久野外 | 乱子伦一区二区三区 | 免费视频爱爱太爽 | 免费观看理伦片在线播放视频软件 | 欧美在线色 |