web-dev-qa-db-ja.com

公式サポートライブラリ23.x. + bottomSheetのようなGoogleマップで画像をスライドさせる

更新
Googleマップがサポートライブラリ23.x. +を使用して、3番目のライブラリを使用しないと同じ動作を実現したい

注:これは重複した質問ではありません:

  1. ビヘイビア、サポートライブラリを使用し、サードパーティライブラリは使用しません(質問のタイトルと上記の説明に追加しました)
  2. 私は次のgifで見られるすべての動作が欲しかったのですが、他の質問は1つまたは2つの動作を求め、それを達成するためにあらゆる方法を使用しています。

    like you can see in this gif

公式のbottomSheetはすでに動作しています(タブおよびビューページャー内でも)。

私が夢中になっているのは、公式のbottomSheetを使用して上にスライドするときにBottomSheetから発生する画像の動作を実現する方法ですか?

FABのようなアンカーを使用しようとしましたが、成功しませんでした。
スクロールリスナの使用について読んだことがありますが、グーグルマップのように滑らかで高速ではない、とPPLは言いました。

私のXML(とにかく助けになるとは思わないが):

<?xml version="1.0" encoding="utf-8"?>
<Android.support.design.widget.CoordinatorLayout
    xmlns:Android="http://schemas.Android.com/apk/res/Android"
    xmlns:app="http://schemas.Android.com/apk/res-auto"
    xmlns:tools="http://schemas.Android.com/tools"
    Android:layout_width="match_parent"
    Android:layout_height="match_parent"
    tools:context=".ui.MasterActivity">

    <Android.support.design.widget.AppBarLayout
        Android:layout_width="match_parent"
        Android:layout_height="wrap_content"
        Android:theme="@style/AppTheme.AppBarOverlay">

        <Android.support.v7.widget.Toolbar
            Android:id="@+id/toolbar"
            Android:layout_width="match_parent"
            Android:layout_height="?attr/actionBarSize"
            Android:background="?attr/colorPrimary"
            app:popupTheme="@style/AppTheme.PopupOverlay"
            app:layout_scrollFlags="scroll|enterAlways|snap">

            <Button
                Android:layout_width="wrap_content"
                Android:layout_height="wrap_content"
                style="?android:attr/borderlessButtonStyle"
                Android:text="Departure"
                Android:layout_gravity="center"
                Android:id="@+id/buttonToolBar"
                />


        </Android.support.v7.widget.Toolbar>

        <Android.support.design.widget.TabLayout
            Android:id="@+id/tabs"
            Android:layout_width="match_parent"
            Android:layout_height="wrap_content"
            app:tabBackground="@Android:color/white"
            app:tabTextColor="@color/colorAccent"
            app:tabSelectedTextColor="@color/colorAccent"/>

    </Android.support.design.widget.AppBarLayout>

    <Android.support.v4.view.ViewPager
        Android:id="@+id/viewpager"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        app:layout_behavior="@string/appbar_scrolling_view_behavior" />


    <Android.support.v4.widget.NestedScrollView
        Android:id="@+id/asdf"
        Android:layout_width="match_parent"
        Android:layout_height="match_parent"
        Android:orientation="vertical"
        app:behavior_peekHeight="100dp"
        Android:fitsSystemWindows="true"
            app:layout_behavior="Android.support.design.widget.BottomSheetBehavior">

        <LinearLayout
            Android:id="@+id/qwert"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:orientation="vertical"
            Android:paddingBottom="16dp"
            Android:background="@Android:color/white"
            Android:padding="15dp">

            <TextView
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:text="BOOTOMSHEET TITLE"
                    Android:textAppearance="@style/TextAppearance.AppCompat.Title" />

            <Button
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:text="Button1"/>

            <TextView
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:text="text 2"
                Android:layout_margin="10dp"/>

            <TextView
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:text="text 3"
                Android:layout_margin="10dp"/>

            <TextView
                Android:layout_width="match_parent"
                Android:layout_height="wrap_content"
                Android:text="text 4"
                Android:layout_margin="10dp"/>


            <FrameLayout
                Android:layout_width="match_parent"
                Android:layout_height="320dp"
                Android:background="@color/colorAccent">

                <TextView
                    Android:layout_width="wrap_content"
                    Android:layout_height="wrap_content"
                    Android:layout_gravity="center"
                    Android:text="Your remaining content here"
                    Android:textColor="@Android:color/white" />

            </FrameLayout>
        </LinearLayout>
    </Android.support.v4.widget.NestedScrollView>


    <Android.support.design.widget.FloatingActionButton
        Android:layout_height="wrap_content"
        Android:layout_width="wrap_content"
        app:layout_anchor="@id/asdf"
        app:layout_anchorGravity="top|right|end"
        Android:src="@drawable/abc_ic_search_api_mtrl_alpha_copy"
        Android:layout_margin="@dimen/fab_margin"
        Android:clickable="true"/>

</Android.support.design.widget.CoordinatorLayout>
41
MiguelHincapieC

コーディネーターのレイアウト動作を使用して効果を実現できます。 CoordinatorLayout.Behaviourクラスを拡張し、コーディネーターレイアウトのビューの1つに対する依存関係を記述し、ビューを含むイメージを子として保持する必要があります。ビューを含むイメージにカスタム記述ビヘイビアーをアタッチする必要があります。 。カスタム動作の記述については、リンクを参照してください カスタム動作の記述

1