次の画像のようなものが欲しい
描画可能な形状を使用して試しました
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" >
<gradient
Android:angle="360"
Android:centerX="50%"
Android:centerY="50%"
Android:gradientRadius="50%"
Android:endColor="#000000"
Android:centerColor="#FFFFFF"
Android:startColor="#000000" >
</gradient>
</shape>
描画可能フォルダーに新しいAndroid xmlファイル(GreyRadial.xmlなど)ファイルを作成します。
Xmlファイルで
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle" >
<gradient
Android:centerColor="#c1c1c1"
Android:endColor="#4f4f4f"
Android:gradientRadius="400"
Android:startColor="#c1c1c1"
Android:type="radial" >
</gradient>
</shape>
を使用してレイアウトの背景でこのxmlを使用します
Android:background="@drawable/GreyRadial"
複数の長方形の形状を使用して、レイヤーリストで効果を近似できます。中央の背景色で塗りつぶされた長方形を使用します。次に、開始色と終了色が同じ2つのグラデーションを使用します。アルファをゼロに設定する以外は、中央の色も同じにします。
以下のコードでは、色は次のとおりです。
@color/background_dark = #ffb8860b
@color/background_light = #ffd2b48c
@color/transparent = #00b8860b
<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:Android="http://schemas.Android.com/apk/res/Android" >
<item>
<shape >
<solid Android:color="@color/background_light"/>
</shape>
</item>
<item>
<shape>
<gradient
Android:startColor="@color/background_dark"
Android:centerColor="@color/transparent"
Android:endColor="@color/background_dark"
Android:angle="45"/>
</shape>
</item>
<item>
<shape>
<gradient
Android:startColor="@color/background_dark"
Android:centerColor="@color/transparent"
Android:endColor="@color/background_dark"
Android:angle="135"/>
</shape>
</item>
</layer-list>
もう一度ソリューション:
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<gradient
Android:centerX="50%"
Android:centerY="50%"
Android:endColor="@Android:color/black"
Android:gradientRadius="100%"
Android:startColor="@Android:color/transparent"
Android:type="radial"/>
</shape>
必要な楕円の縦横比が固定されている場合は、グラデーションのドロウアブルを背景として使用し、scaleXまたはscaleYを使用して楕円に引き伸ばすことができます。
描画可能なmyradial.xml:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:Android="http://schemas.Android.com/apk/res/Android"
Android:shape="rectangle">
<!--Radial gradient centered at middle of top with glow color-->
<gradient
Android:startColor="FF336699"
Android:endColor="00000000"
Android:centerX="50%"
Android:centerY="50%"
Android:gradientRadius="50%"
Android:type="radial"/>
</shape>
背景として使用するビュー
<View
Android:layout_width="200dp"
Android:layout_height="100dp"
Android:background="@drawable/myradial"
Android:scaleX="0.5"
/>
アスペクト比が固定されていない場合でも、実行時にコードでscaleXを設定できる可能性があります。
これは、すべての状況ですべての人に有効というわけではありません。難しいレイアウトになります。 1つの素晴らしい点は、ソリッド上の2つの線形グラデーションでポストされた非常にエレガントなソリューションの3つのパスと比較して、単一のレンダリングパスです。また、22.5度の角度で線形グラデーションを作成するなど、グラデーションを引き伸ばすためにも使用できます。
これが私の問題の解決策です。
<shape Android:shape="rectangle">
<gradient
Android:endColor="@color/your_dark_color"
Android:startColor="@color/your_light_color"
Android:type="radial"
Android:gradientRadius="700"/>
Android:gradientRadius
の値を変更することで、正確な結果を得ることができました。