9

無制限の波紋と同時に背景色を定義する RippleDrawable を作成することは可能ですか? 私はすべてを試しましたが、形状とその色を定義すると、波紋はもう無制限ではありません。また、このページhttps://developer.android.com/reference/android/graphics/drawable/RippleDrawable.htmlには、形状に無制限の波紋を追加することに関する参照はありません。

このレイヤーリストで試してみましたが、結果はひどいものです

    <layer-list 
        xmlns:android="http://schemas.android.com/apk/res/android">
<item>
    <ripple
        android:color="@color/android_l_light_gray">
    </ripple>
</item>

<item>      
    <shape
        android:shape="rectangle">
        <solid android:color="@color/android_l_dark_gray" />
    </shape>    
</item> </layer-list>

これは私が得るものですここに画像の説明を入力

4

2 に答える 2

22

最初に、layer-listdrawable は と同様に機能することに注意してください。表示されると s がFrameLayoutスタックitemされるため、波紋を前に出したい場合は下に移動するだけです

<?xml version="1.0" encoding="utf-8"?>
<layer-list
    xmlns:android="http://schemas.android.com/apk/res/android">
  <item>
    <shape
        android:shape="rectangle">
      <solid android:color="@color/android_l_dark_gray"/>
    </shape>
  </item>
  <item>
    <ripple android:color="@color/android_l_light_gray"/>
  </item>
</layer-list>

次のようなものを生成します

レイヤーリストの上にリップル

他のボタンによってどのように「クリッピング」されるか気付きましたか? 実際にはオーバードローされています。これは描画順序のためです。リップルが実際に切り取られているわけではなく、他のビューの背景が上に描画されるため、特定のレイアウトに対していくつかの解決策を考えることができます。

を。layer-listドローアブルを取り除き、rippleボタンの背景として使用し、shapeまたはcolorドローアブルをViewGroup背景として使用して、以下を生成します。

リップルのみ

ViewGroup他のバックグラウンドが原因でグリッドのような効果が失われたことに注意してください。ただし、ロリポップの他の数字パッドを見てください。それでもグリッドを使用して描画したい場合は、グリッドの仕切りがないことに気付くでしょう。

b. リップルをフォアグラウンド/オーバーレイ/ドローアブルトップ ドローアブルとして使用/描画し、もう一方をバックグラウンドとして使用/描画しますが、以前と同様に描画順序で同様の問題が発生する可能性があると思います。

c. もう一つ考えていたのに忘れてしまった、夢のように戻ってくるかもしれません¯\_(ツ)_/¯

AOSP の Calculator をチェックしてください。グリッド用に借りるか、単にその方法を学びたいと思うかもしれませんCalculatorPadLayout:)

于 2014-12-02T23:40:19.487 に答える