Chcę utworzyć niestandardowy contentScrim dla mojego collapsingToolbarLayout
. Mój collapsingToolbarLayout ma wewnątrz imageview
. Kiedy przewija, teoretycznie ImageView jest przypuszczać, aby fade out i mój kolor siatka jest przypuszczać zanikać wZwijanieToolbarLayout: niestandardowe treści podobne do Facebook
Wszyscy wiemy, możemy stworzyć tkaninę maskującą tak:.
<android.support.design.widget.CollapsingToolbarLayout
android:id="@+id/collapsing_toolbar"
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:contentScrim="?attr/colorPrimary"
android:background="@color/white"
app:expandedTitleMarginStart="48dp"
app:expandedTitleMarginEnd="64dp"
android:fitsSystemWindows="true"
app:expandedTitleTextAppearance="@color/transparent"
app:layout_scrollFlags="scroll|exitUntilCollapsed"
>
jednak android domyślne siatka wydaje się, że zaczyna działać dopiero po przewinięciu 3/4 w górę ekranu. Przed tym punktem widok obrazu nadal jest w pełni pokazany. Również po osiągnięciu 3/4 ekranu, tkanina maskująca w rzutach i automatycznie zmienia kolor collapsingtoolbarlayout do koloru scrim:
Zamiast to całkowicie wypełnia ekran podczas przewijania 3/4 drogi do góry i zanim dotarliśmy do toolbar
, chcę, aby delikatnie zniknęło, aż przewiniesz do numeru toolbar
.
Jeśli chcesz zobaczyć przykład efektu, który chcę utworzyć, zajrzyj do aplikacji Facebook. Jest to aplikacja Facebook gdy collapsingToolbarLayout jest w pełni rozwinięty:
Podczas przewijania do około 3/4 drogi w dół, collapsingToolbarLayout ma wyblakły kolor niebieski i niebieski nie jest całkowicie nasycając:
Więc muszę tworzyć następujące w moim collapsingToolbarLayout
:
<FrameLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/frame_picture">
<com.customshapes.SquareImageView
android:id="@+id/backdrop"
android:contentDescription="@string/photo"
android:transitionName="@string/transition"
android:layout_width="match_parent"
android:layout_height="240dp"
android:scaleType="centerCrop"
android:fitsSystemWindows="true"
/>
<com.customshapes.SquareImageView
android:id="@+id/fading_backdrop"
android:layout_width="match_parent"
android:background="?attr/colorPrimary"
android:layout_height="240dp"
android:alpha="0"
android:fitsSystemWindows="true"
/>
</FrameLayout>
Framelayout zawiera tło imageview
, które przechowuje obraz wyświetlany wewnątrz mojego zwijacza ToolbarLayout, a przed nim znajduje się widok, w którym znajduje się "scrimColor"? Attr/colorPrimary z alfa 0, dzięki czemu tło imageview
prześwitywać.
Potem wdrożył appBarLayout za onOffsetChangedListener:
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
fading_backdrop.setImageAlpha(verticalOffset);
fading_backdrop.invalidate();
}
Jesteśmy ustawiania alfa fading_backdrop tak, że pojawi się ona, kiedy przewijać w górę. Próbuję sztucznie stworzyć scrim.
Jednak wydaje się, że to nie działa poprawnie. Nie ma żadnego zanikania, gdy uruchamiam ten kod. Czy ktoś wie, co robię źle?
Co to jest fading_backgrop? –
Uwaga: jeśli używasz TabLayout lub przezroczystego paska stanu, może być konieczne dodanie ich do obliczeń dla 'f'. –