私はcollapsingToolbarLayout
のカスタムcontentScrimを作成したいと思います。私のcollapsingToolbarLayoutの内部にimageview
があります。 。それがスクロールすると、理論的にはImageViewのがフェードアウトすると仮定して、私のスクリム色がフェードインすると仮定されてCollapsingToolbarLayout:カスタムcontentScrim with Facebook
、私たちは皆、私たちはこのようなスクリムを作成することができます知っている:
<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"
>
しかしAndroidのデフォルトのスクリム画面を3/4上にスクロールすると作業が始まるようです。その前に、画像ビューは完全に表示されます。あなたが画面の3/4に達した場合も、スクリムでキックし、自動的にあなたのスクリム色にcollapsingtoolbarlayoutの色を変更します。
代わりにあなたは3をスクロールするとき、それは完全に画面を埋めたの
/私たちがtoolbar
に到達する前に、あなたがスクロールしてtoolbar
まで穏やかに消えたいと思っています。
作成したいエフェクトの例を見たい場合は、Facebookアプリをご覧ください。これはcollapsingToolbarLayoutが完全に展開されたFacebookアプリです:
あなたがダウンして3/4程度道のにスクロールし、collapsingToolbarLayoutは色あせた青い色をしていると青は完全に飽和されていません。
だから、私は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>
を0
framelayoutは、背景画像imageview
で構成され、collapsingToolbarLayout内に表示されている画像を保持し、その前面に背景画像imageview
が表示されるように、 'scrimColor'?attr/colorPrimaryが0のアルファベットを持つ画像ビューです輝く。
は、その後、私はappBarLayoutのonOffsetChangedListenerを実装:
@Override
public void onOffsetChanged(AppBarLayout appBarLayout, int verticalOffset) {
fading_backdrop.setImageAlpha(verticalOffset);
fading_backdrop.invalidate();
}
我々は上にスクロールするとき、それが表示されるように我々はfading_backdropのアルファを設定しています。私は人工的にスクリムを作りようとしています。
ただし、これは正しく動作していないようです。このコードを実行すると、まったく退色はありません。誰かが私が間違っていることを知っていますか?
ここではfading_backgropとは何ですか? –
注意、TabLayoutまたは透明なステータスバーを使用している場合は、それらを 'f'の計算に追加する必要があります。 –