4

ドキュメントにあるように、マテリアル デザインのシャドウ スタイルを で追加およびカスタマイズできますandroid:elevation。これは、私がまだ出会ったすべての要素でうまく機能します。

しかし、上に描画する図形に対して同じ (またはほぼ同じ) 動作を取得したい場合はどうすればよいCanvasでしょうか? - 現在、私は で遊んでPaint.setShadowLayer()いますが、結果はネイティブ実装と比較して「マテリアル」スタイルにはほど遠いです。

同じ効果を達成するためのライブラリや方法はありますか? できれば標高レベルを追加することによって?

4

1 に答える 1

3

Android Lollipop が影のレンダリングに使用している方法は非常に簡単です。

  • ビューの黒い形を描く
  • ScriptIntrisincBlur でぼかします
  • ビューの下に描画します

このメソッドをシェイプに適用できます。最近のすべての Android でカップケーキに至るまで、リアルタイムの影を描画できるライブラリにこれらの手順を実装しました。ここで見つけることができます: https://github.com/ZieIony/Carbon/blob/master/carbon/src/main/java/carbon/widget/FrameLayout.java#L207

編集: Android シャドウ描画コードへのリンク: https://github.com/android/platform_frameworks_base/blob/4d9ffdf95237c4ee59514c678fea6ff157e0eee3/libs/hwui/OpenGLRenderer.cpp#L2507

于 2015-02-16T10:46:29.010 に答える