7

ボタンやその他のコンポーネントにカスタム シャドウを作成するためのコンポーネントを実現しようとしています。9 パッチまたはシャドウ付きの png を使用すると簡単になることはわかっていますが、その状態 (押された状態) でもプログラムで色とサイズを変更したいと考えています。など)、すべて XML で 9 つの画像を試してみることにしました。これにより、影の陰影がコンポーネントの側面からグラデーションを開始します。

<!-- Left Shadow layer -->
<item>
    <shape android:shape="rectangle" >
        <gradient
            android:angle="0"
            android:endColor="#FFFF0000"
            android:startColor="#00FF0000" />
    </shape>
</item>

問題は角にあり、android:gradientRadius パラメータは固定サイズに設定されていますが、コンテキスト ヘルプでは、ベース サイズ 10% または親サイズ 10% のパーセンテージで設定できると言われています。 p、100%pの半径を設定して、グラデーションが常にメインカラーから消え、正方形の端に消えるようにしたいのです。

- 編集 -

gradientRadiusについての Android ドキュメント

<shape android:shape="rectangle" >
        <gradient
            android:endColor="#00FF0000"
            android:startColor="#FFFF0000"
            android:gradientRadius="18"
            android:centerX="100%"
            android:centerY="100%"
            android:type="radial" />
    </shape>

そして、それが今の場所です:(親ビューに合わせてこのサイズを設定する方法がわかりません。

コンポーネントが完成したら、コードを回答に入れます:)そのため、典型的なボタンはxmlでカスタマイズ可能な影を持つことができます。

当然のコンポーネントのイメージ。

- 編集 -

私はまだこれに興味があります:)誰も手がかりがありませんか?

放射グラデーションのボタン

4

1 に答える 1

2

xml をあきらめて、コードで drawable を実装する必要があると思います。Drawable クラスを拡張すると、getBounds() で長方形としてサイズを取得できます。また、onBoundsChange メソッドで動的に再計算することもできます。グラデーションを簡単に作成して Paint オブジェクトで使用することもできます (setShader メソッド)。

于 2012-08-24T10:48:21.197 に答える