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

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android CoordinatorLayout Behavior

發(fā)布時(shí)間:2023/12/20 Android 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android CoordinatorLayout Behavior 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

? ? ? ?Behavior是Android Support Design庫里面新增的布局概念,主要的作用是用來協(xié)調(diào)CoordinatorLayout里面直接Child Views之間交互行為的。

特別要注意的點(diǎn)是Behavior只能作用于CoordinatorLayout的直接Child View.

? ? ? ?既然Behavior是用來協(xié)調(diào)CoordinatorLayout直接Child View的交互行為的。那Behavior是怎么工作的呢,這個(gè)也是我們本文的重點(diǎn)。我們準(zhǔn)備從以下四條線路來做簡(jiǎn)單的分析。

  • Behavior的測(cè)量和布局。(Behavior里面onMeasureChild、onLayoutChild函數(shù))

  • Behavior的普通觸摸事件。(Behavior里面的onInterceptTouchEvent,onTouchEvent函數(shù))

  • Behavior的嵌套NestedScrolling觸摸事件。(Behavior里面的onStartNestedScroll、onNestedScrollAccepted、onStopNestedScroll、onNestedScroll、onNestedPreScroll、onNestedFling、onNestedPreFling函數(shù))

  • Behavior的依賴關(guān)系。(Behavior里面的layoutDependsOn、onDependentViewChanged、onDependentViewRemoved函數(shù))

  • ? ? ? ?CoordinatorLayout直接Child View的LayoutParam里面的Behavior是怎么實(shí)例化得到.有三種方式:第一種,注解設(shè)置,類似@CoordinatorLayout.DefaultBehavior(AppBarLayout.Behavior.class)的形似;第二種,java代碼設(shè)置;第三種,app:layout_behavior來設(shè)置.關(guān)于Behavior的實(shí)例化這里我們就不展開來講,有興趣的可以參考CoordinatorLayout里Behavior簡(jiǎn)單分析里面Behavior對(duì)象是怎么被實(shí)例化的.

    第一種注解方式的使用來設(shè)置默認(rèn)Behavior的.

    一、Behavior的測(cè)量和布局

    ? ? ? ?Behavior可以引導(dǎo)CoordinatorLayout的直接Child View 進(jìn)行測(cè)量和布局。CoordinatorLayout需要進(jìn)行measure、layout的時(shí)候,都會(huì)通過Behavior詢問該Behavior對(duì)應(yīng)的View是否需要進(jìn)行相應(yīng)的測(cè)量和布局操作,如果不需要,就進(jìn)行默認(rèn)的行為。如果需要?jiǎng)t按照Behavior里面編寫的規(guī)則來測(cè)量和布局。這里我們只需要關(guān)注Behavior類的onMeasureChild()、onLayoutChild()兩個(gè)函數(shù)。

    ? ? ? ?我們以一個(gè)具體的例子來簡(jiǎn)單的解釋下Behavior怎么引導(dǎo)CoordinatorLayout的直接Child View 進(jìn)行測(cè)量和布局的.在上一篇文章Android Design Support Library 控件的使用中有一個(gè)CoordinatorLayout + RecyclerView(ViewPager里面放置的是RecyclerView) + AppBarLayout 實(shí)現(xiàn)AppBarLayout里面Toolbar的收縮和展開效果圖的例子.如下圖所示


    并且他的布局文件如下

    <?xml version="1.0" encoding="utf-8"?> <android.support.design.widget.CoordinatorLayoutxmlns:android="http://schemas.android.com/apk/res/android"xmlns:app="http://schemas.android.com/apk/res-auto"android:layout_width="match_parent"android:layout_height="match_parent"android:background="@color/colorActivity"><android.support.design.widget.AppBarLayoutandroid:layout_width="match_parent"android:layout_height="wrap_content"android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"><android.support.v7.widget.Toolbarandroid:id="@+id/toolbar"android:layout_width="match_parent"android:layout_height="?attr/actionBarSize"android:background="?attr/colorPrimary"app:layout_scrollFlags="scroll"app:popupTheme="@style/ThemeOverlay.AppCompat.Light"><TextViewandroid:layout_width="match_parent"android:layout_height="match_parent"android:layout_gravity="center"android:textColor="@android:color/white"android:gravity="center"android:text="自定義標(biāo)題"android:textSize="18sp" /></android.support.v7.widget.Toolbar><android.support.design.widget.TabLayoutandroid:id="@+id/tab_layout_title"android:layout_width="match_parent"android:layout_height="wrap_content"style="@style/AppTheme.TabStyle"app:tabMode="scrollable"app:tabGravity="fill" /></android.support.design.widget.AppBarLayout><android.support.v4.view.ViewPagerandroid:id="@+id/page_collapsing"android:layout_width="match_parent"android:layout_height="match_parent"app:layout_behavior="@string/appbar_scrolling_view_behavior" /></android.support.design.widget.CoordinatorLayout>

    ? ? ? ?最外層一個(gè)CoordinatorLayout布局,并且CoordinatorLayout里面有兩個(gè)直接的子View:AppBarLayout和ViewPager.其中AppBarLayout有一個(gè)默認(rèn)的AppBarLayout.Behavior,同時(shí)ViewPager我們通過app:layout_behavior=”@string/appbar_scrolling_view_behavior”給設(shè)置了AppBarLayout.ScrollingViewBehavior.這樣CoordinatorLayout兩個(gè)直接子View都有對(duì)應(yīng)的Behavior了.從界面結(jié)果出咱也能看到剛進(jìn)入界面的時(shí)候ViewPager是在AppBarLayout的下面的.咱們就分析分析他是怎么做到的.肯定和測(cè)量和布局相關(guān),那出發(fā)點(diǎn)肯定是CoordinatorLayout類的onMeasure()和onLayout().

    CoordinatorLayout類onMeasure()函數(shù)

    @Overrideprotected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {......for (int i = 0; i < childCount; i++) {final CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) child.getLayoutParams();......final CoordinatorLayout.Behavior b = lp.getBehavior();if (b == null || !b.onMeasureChild(this, child, childWidthMeasureSpec, keylineWidthUsed,childHeightMeasureSpec, 0)) {onMeasureChild(child, childWidthMeasureSpec, keylineWidthUsed,childHeightMeasureSpec, 0);}......}......}

    ? ? ? ?分析可以發(fā)現(xiàn)如果對(duì)應(yīng)的子View有對(duì)應(yīng)的Behavior的時(shí)候,會(huì)先去調(diào)用Behavior里面的onMeasureChild()看Behavior有沒有制定自己的測(cè)量方式.這下咱就的進(jìn)入ViewPager對(duì)應(yīng)的Behavior AppBarLayout.ScrollingViewBehavior里面的onMeasureChild()方法里面去瞧一瞧了,這里我們就不進(jìn)去了.里面也就是一些正常的測(cè)量方法.測(cè)量完成接下來就是layout了.CoordinatorLayout類的onLayout()方法.

    CoordinatorLayout類onLayout()方法

    @Overrideprotected void onLayout(boolean changed, int l, int t, int r, int b) {......for (int i = 0; i < childCount; i++) {final View child = mDependencySortedChildren.get(i);......final CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) child.getLayoutParams();final CoordinatorLayout.Behavior behavior = lp.getBehavior();if (behavior == null || !behavior.onLayoutChild(this, child, layoutDirection)) {onLayoutChild(child, layoutDirection);}}}

    ? ? ? ?同樣分析可以得到有對(duì)應(yīng)的Behavior就先進(jìn)入到Behavior的onLayoutChild()方法了.ViewPager設(shè)置的AppBarLayout.ScrollingViewBehavior的onLayoutChild()方法里面獲取得到AppBarLayout的區(qū)域,之后把ViewPager布局layout到AppBarLayout的下面.

    ? ? ? ?這樣咱們以一個(gè)簡(jiǎn)單的例子對(duì)Behavior的測(cè)量和布局做了一個(gè)非常簡(jiǎn)單的分析.里面很多地方也沒有去深究.如果大家有什么疑問的話,可以留言.在能力范圍之內(nèi)的都會(huì)盡力為大家解答的.

    二、Behavior的普通觸摸事件

    ? ? ? ?Behavior的普通觸摸事件主要和Behavior里面的onInterceptTouchEvent()和onTouchEvent()兩個(gè)函數(shù)相關(guān).最終的目的也就是想把對(duì)應(yīng)的觸摸時(shí)間傳遞到Behavior對(duì)應(yīng)的View里面去,讓View做一些相應(yīng)的處理.

    ? ? ? ?父布局CoordinatorLayout產(chǎn)生的onInterceptTouchEvent,onTouchEvent事件都會(huì)先送到Behavior的onInterceptTouchEvent()和onTouchEvent()里面,讓去問問Behavior對(duì)應(yīng)的View要不要處理.你要處理就先給你處理.你不處理才輪到CoordinatorLayout來處理.關(guān)于這部分的內(nèi)容之前有寫過一個(gè)文章.我們就不展開討論了.有興趣的可以參考下CoordinatorLayout里Behavior簡(jiǎn)單分析里面Behavior的onInterceptTouchEvent + onTouchEvent一部分的分析.

    三、Behavior的嵌套NestedScrolling觸摸事件

    ? ? ? ?關(guān)于Behavior嵌套滑動(dòng)主要涉及Behavior里面的onStartNestedScroll(), onNestedScrollAccepted(), onStopNestedScroll(), onNestedScroll(), onNestedPreScroll(), onNestedFling(), onNestedPreFling() 函數(shù).

    ? ? ? ?這里我們多次提到了嵌套滑動(dòng),有興趣的可以參考我之前寫的Android 嵌套滑動(dòng)分析一文的簡(jiǎn)單分析.

    ? ? ? ?Behavior的嵌套NestedScrolling事件,大部分情況下是這樣的.CoordinatorLayout里面另一個(gè)子View產(chǎn)生了嵌套滑動(dòng)事件,這個(gè)事件先傳遞到CoordinatorLayout,然后CoordinatorLayout在把這個(gè)嵌套事件過渡到Behavior里面去.之后在讓Beahaior對(duì)應(yīng)的View按照實(shí)際情況做不同的處理.同樣關(guān)于這部分內(nèi)容的具體分析,有興趣的可以參考下之前寫的CoordinatorLayout里Behavior簡(jiǎn)單分析里面Behavior的onStartNestedScroll + onNestedScrollAccepted + onStopNestedScroll + onNestedScroll + onNestedPreScroll + onNestedFling + onNestedPreFling。嵌套滑動(dòng)引起的變化部分的簡(jiǎn)單分析.

    ? ? ? ?同樣為了加深理解,這里還是以上文CoordinatorLayout + RecyclerView(ViewPager里面放置的是RecyclerView) + AppBarLayout 實(shí)現(xiàn)AppBarLayout里面Toolbar的收縮和展開效果圖的例子來做一個(gè)簡(jiǎn)單的說明.這也是ViewPager里面為什么一定要放置實(shí)現(xiàn)了NestedScrollingChild2接口的View.這里ViewPager里面放了RecyclerView(RecyclerView實(shí)現(xiàn)了NestedScrollingChild接口).當(dāng)RecyclerView有對(duì)應(yīng)的NestedScrollingChild滑動(dòng)的時(shí)候,都會(huì)先傳遞到CoordinatorLayout里面對(duì)應(yīng)函數(shù)里面去,然后CoordinatorLayout又會(huì)原封不動(dòng)的傳遞到Behavior對(duì)應(yīng)的onStartNestedScroll(), onNestedScrollAccepted(),onStopNestedScroll(),onNestedScroll(), onNestedPreScroll(),onNestedFling(),onNestedPreFling()的函數(shù)里面去.換句話說就是傳遞到了AppBarLayout對(duì)應(yīng)的AppBarLayout.Behavior里面去.在里面讓AppBarLayout對(duì)某個(gè)View的上移和下移的處理.

    四、Behavior的依賴關(guān)系

    ? ? ? ?關(guān)于Behavior依賴關(guān)系對(duì)應(yīng)Behavior里面的layoutDependsOn(), onDependentViewChanged(),onDependentViewRemoved()這三個(gè)函數(shù).

    ? ? ? ?Behavior的依賴指的是當(dāng)前Behavior對(duì)應(yīng)的View依賴于哪個(gè)View.當(dāng)依賴的View有變化的時(shí)候.會(huì)調(diào)用Behavior里面對(duì)應(yīng)的函數(shù).然我們對(duì)Behavior對(duì)應(yīng)的View做相應(yīng)的處理.同樣關(guān)于這一部分的具體分析可以參考之前寫的CoordinatorLayout里Behavior簡(jiǎn)單分析里面Behavior的layoutDependsOn + onDependentViewChanged + onDependentViewRemoved。View引起的變化部分.這里我們就不重新拿出來講了,而且里面有一個(gè)簡(jiǎn)單的例子.

    ? ? ? ?為了加深理解,咱們還是以上文提到的CoordinatorLayout + RecyclerView(ViewPager里面放置的是RecyclerView) + AppBarLayout 實(shí)現(xiàn)AppBarLayout里面Toolbar的收縮和展開效果圖的例子來做一個(gè)簡(jiǎn)單的說明哈,其實(shí)在這個(gè)里面ViewPager會(huì)依賴AppBarLayout的變化.為什么這么說呢.看ViewPager對(duì)應(yīng)的AppBarLayout.ScrollingViewBehavior里面

    @Overridepublic boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {// We depend on any AppBarLayoutsreturn dependency instanceof AppBarLayout;}@Overridepublic boolean onDependentViewChanged(CoordinatorLayout parent, View child,View dependency) {offsetChildAsNeeded(parent, child, dependency);return false;}

    看到了吧,如果是AppBarLayout就依賴他.并且在onDependentViewChanged函數(shù)中ViewPager也會(huì)跟著AppBarLayout的移動(dòng)而移動(dòng).

    五、Behavior的具體使用

    5.1 BottomSheetBehavior的使用

    ? ? ? ?BottomSheetBehavior:實(shí)現(xiàn)底部彈出框的一個(gè)Behavior,注意BottomSheetBehavior一定要配合CoordinatorLayout一起使用才有效果。

    BottomSheetBehavior對(duì)應(yīng)的View的狀態(tài):

    狀態(tài)解釋
    STATE_EXPANDEDbottom sheet 處于完全展開的狀態(tài):當(dāng)bottom sheet的高度低于CoordinatorLayout容器時(shí),整個(gè)bottom sheet都可見;或者CoordinatorLayout容器已經(jīng)被bottom sheet填滿
    STATE_COLLAPSED折疊狀態(tài)(默認(rèn)), bottom sheets只在底部顯示一部分布局。顯示高度可以通過 app:behavior_peekHeight 設(shè)置
    STATE_DRAGGING過渡狀態(tài),此時(shí)用戶正在向上或者向下拖動(dòng)bottom sheet
    STATE_SETTLING視圖從脫離手指自由滑動(dòng)到最終停下的這一小段時(shí)間
    STATE_HIDDEN默認(rèn)無此狀態(tài)(需要通過app:behavior_hideable 啟用此狀態(tài)),啟用后用戶將能通過向下滑動(dòng)完全隱藏 bottom sheet

    BottomSheetBehavior屬性設(shè)置

    屬性解釋
    app:behavior_hideablebottom sheet是否可以完全隱藏,默認(rèn)為false
    app:behavior_peekHeightbottom sheet為STATE_COLLAPSED(折疊)狀態(tài)的時(shí)殘留的高度
    app:behavior_skipCollapsed是否跳過STATE_COLLAPSED狀態(tài)

    ? ? ? ?BottomSheetBehavior有兩種實(shí)現(xiàn)方式,一個(gè)之直接嵌套在布局里面,一個(gè)是通過dialog的方式彈出.兩種使用方式都不難.所以我們也就以一個(gè)具體的實(shí)例來說明.效果圖如下:


    5.2 自定義Behavior

    ? ? ? ?關(guān)于自定義Behavior,我們也實(shí)現(xiàn)了兩個(gè)簡(jiǎn)單的效果.

    5.2.1 上滑下滑的時(shí)候FloatingActionButton底部彈入或者彈出

    效果圖


    Behavior

    public class FabBottomInOutBehavior extends FloatingActionButton.Behavior {private static final Interpolator INTERPOLATOR = new FastOutSlowInInterpolator();private boolean mAnimatingOut = false;public FabBottomInOutBehavior() {}public FabBottomInOutBehavior(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean onStartNestedScroll(@NonNull CoordinatorLayout coordinatorLayout,@NonNull FloatingActionButton child,@NonNull View directTargetChild,@NonNull View target,int axes,int type) {//需要垂直的滑動(dòng)return axes == ViewCompat.SCROLL_AXIS_VERTICAL ||super.onStartNestedScroll(coordinatorLayout, child, directTargetChild, target, axes, type);}@Overridepublic void onNestedScroll(@NonNull CoordinatorLayout coordinatorLayout,@NonNull FloatingActionButton child,@NonNull View target,int dxConsumed,int dyConsumed,int dxUnconsumed,int dyUnconsumed,int type) {super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, type);if (dyConsumed > 0 && !mAnimatingOut) {//向上滑動(dòng)animateOut(child);} else if (dyConsumed < 0) {//向下滑動(dòng)animateIn(child);}}private void animateOut(final FloatingActionButton button) {ViewCompat.animate(button).translationY(button.getHeight() + getMarginBottom(button)).setInterpolator(INTERPOLATOR).withLayer().setListener(new ViewPropertyAnimatorListener() {public void onAnimationStart(View view) {mAnimatingOut = true;}public void onAnimationCancel(View view) {mAnimatingOut = false;}public void onAnimationEnd(View view) {mAnimatingOut = false;}}).start();}private void animateIn(FloatingActionButton button) {ViewCompat.animate(button).translationY(0).setInterpolator(INTERPOLATOR).withLayer().setListener(null).start();}private int getMarginBottom(View v) {final ViewGroup.LayoutParams layoutParams = v.getLayoutParams();if (layoutParams instanceof ViewGroup.MarginLayoutParams) {return ((ViewGroup.MarginLayoutParams) layoutParams).bottomMargin;}return 0;} }
    5.2.2 上滑的時(shí)候以覆蓋的方式蓋住頭部

    效果圖


    Behavior

    public class HeaderCoverBehavior extends CoordinatorLayout.Behavior<View> {public HeaderCoverBehavior() {}public HeaderCoverBehavior(Context context, AttributeSet attrs) {super(context, attrs);}@Overridepublic boolean layoutDependsOn(CoordinatorLayout parent, View child, View dependency) {return super.layoutDependsOn(parent, child, dependency);}@Overridepublic boolean onLayoutChild(CoordinatorLayout parent, View child, int layoutDirection) {CoordinatorLayout.LayoutParams params = (CoordinatorLayout.LayoutParams) child.getLayoutParams();if (params != null && params.height == CoordinatorLayout.LayoutParams.MATCH_PARENT) {child.layout(0, 0, parent.getWidth(), parent.getHeight());child.setTranslationY(getFirstChildHeight(parent));return true;}return super.onLayoutChild(parent, child, layoutDirection);}@Overridepublic boolean onStartNestedScroll(@NonNull CoordinatorLayout coordinatorLayout,@NonNull View child,@NonNull View directTargetChild,@NonNull View target,int axes,int type) {return (axes & ViewCompat.SCROLL_AXIS_VERTICAL) != 0;}@Overridepublic void onNestedPreScroll(@NonNull CoordinatorLayout coordinatorLayout,@NonNull View child,@NonNull View target,int dx,int dy,@NonNull int[] consumed,int type) {super.onNestedPreScroll(coordinatorLayout, child, target, dx, dy, consumed, type);// 在這個(gè)方法里面只處理向上滑動(dòng)if (dy < 0) {return;}float transY = child.getTranslationY() - dy;if (transY > 0) {child.setTranslationY(transY);consumed[1] = dy;}}@Overridepublic void onNestedScroll(@NonNull CoordinatorLayout coordinatorLayout,@NonNull View child,@NonNull View target,int dxConsumed,int dyConsumed,int dxUnconsumed,int dyUnconsumed,int type) {super.onNestedScroll(coordinatorLayout, child, target, dxConsumed, dyConsumed, dxUnconsumed, dyUnconsumed, type);// 在這個(gè)方法里只處理向下滑動(dòng)if (dyUnconsumed > 0) {return;}float transY = child.getTranslationY() - dyUnconsumed;if (transY > 0 && transY < getFirstChildHeight(coordinatorLayout)) {child.setTranslationY(transY);}}/*** 這里有優(yōu)化的空間,這里純粹的去取了第一個(gè)view的measure height 有點(diǎn)限制的太死了*/private int getFirstChildHeight(CoordinatorLayout coordinatorLayout) {return coordinatorLayout.getChildAt(0).getMeasuredHeight();}}

    ? ? ? ?關(guān)于Behavior所要想分享的東西就這些了,如果后面自定義Behavior實(shí)現(xiàn)的特別有意思的效果也會(huì)第一時(shí)間分享給大家.最后上文涉及的所有實(shí)例的下載地址 https://github.com/tuacy/DesignWidget

    總結(jié)

    以上是生活随笔為你收集整理的Android CoordinatorLayout Behavior的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 婷婷五月小说 | 乖女从小调教h尿便器小说 欧美韩一区二区 | 中文字幕永久视频 | 欧美日韩精品一区二区三区四区 | 99久久精| 国产91大片| 国产综合区 | 亚洲AV午夜福利精品一级无码 | 麻豆91精品| 欧美日韩激情 | 欧美人妖乱大交 | 丰满人妻一区二区三区大胸 | 国产精品无码午夜福利 | 欧美日韩中文字幕在线视频 | 九七影院在线观看免费观看电视 | 天堂中文在线官网 | 亚洲小视频网站 | 天天操天天爽天天干 | 一本色道无码道dvd在线观看 | av色噜噜| 中文字幕天堂av | 91无毒不卡 | 女生脱裤子让男生捅 | 99re这里| 美女网站av | 免费成人美女在线观看 | 丰满孕妇性春猛交xx大陆 | 中文字幕一区二区三区乱码人妻 | 九九精品视频免费 | 黄色在线免费看 | 69精品视频 | 欧美三日本三级少妇三级99观看视频 | 亚洲视频观看 | 女人扒开屁股让我添 | 色婷婷伊人 | 亚洲欧美另类中文字幕 | 日本乱码视频 | 天天爽天天搞 | 久久国产日韩 | 成年人网站黄 | 男女激情在线观看 | 卡通动漫精品一区二区三区 | 性囗交免费视频观看 | 国产午夜精品一区二区三区四区 | 久久精品导航 | 一级爱爱免费视频 | 羞羞漫画在线播放 | 人妻无码一区二区三区四区 | 艳妇乳肉豪妇荡乳xxx | 国产午夜福利在线播放 | 国产一级高清视频 | 国产精品毛片一区二区在线看 | 色吧视频 | 欧美日韩第一区 | 91免费在线播放 | 欧美综合图片 | 欧美视频一区二区三区在线观看 | 国产精品人人妻人人爽人人牛 | 久久77| 伊人蕉久| 精品三级视频 | 欧美日韩不卡一区 | 国产伦精品一区二区. | 欧美性爱精品在线 | 又黄又骚的视频 | 中文字幕三区 | 中文字幕3区 | 国产精品成人免费精品自在线观看 | 久久亚洲精精品中文字幕早川悠里 | ,一级淫片a看免费 | 久久a久久| 91久久一区二区 | 91精品国产综合久久久蜜臀图片 | 污污的网站在线观看 | 欧美一区二区免费 | 老熟妇仑乱一区二区av | y11111少妇| 国产精品6 | 亚洲综合色av | 中文字幕久久久久久久 | 成人免费一级 | 女女同性被吸乳羞羞 | 亚洲一区二区 | 中文日韩av | a级片免费在线观看 | 91久久精品国产 | 国产欧美一区二区三区国产幕精品 | 在线观看黄色网页 | 91精品国产综合久久久蜜臀图片 | 日韩精品一区在线 | 在线午夜电影 | 老司机综合网 | 亚洲综合一区二区三区 | 日本大胆欧美人术艺术 | 午夜影剧院 | 色婷婷综合久久久中文字幕 | 久久av色| 岛国成人在线 | 波多野结衣一区二区三区中文字幕 |