3

編集:上記の解決策を見てください

私はパニック状態だ。私がやりたいのは、グラデーションの垂直方向の中心を変更する線形GradientDrawableを設定することです...グラデーションの描画はうまくいきますが、どうすればその中心を変更できますか?!?

RelativeLayout bgScreen = (RelativeLayout) findViewById(R.id.player_screen);

GradientDrawable gd = new GradientDrawable(
     GradientDrawable.Orientation.TOP_BOTTOM,
     new int[] {startColor,endColor});

gd.setCornerRadius(0f);
gd.setAlpha(200);
bgScreen.setBackground(gd); 


public void redrawOrChangeBackgroundGradient(){
    //??? either change center of existing
    gd.setGradientCenter(float x, float y) //ONLY works in RADIAL_GRADIENT or SWEEP_GRADIENT.

    //??? or complete redraw Gradient with different center

}

ここで、コードを介してグラデーションを変更する方法の写真の例を示します

ここに画像の説明を入力

そんなに難しいことはありませんよね?

4

1 に答える 1

2

線形GradientDrawables の中心をプログラムで設定する機能がないことは、すでに登録されている問題です。

ただし、こちらで説明されている回避策があります。基本的に、PaintDrawableからを作成し、LinearGradientそれをビューの背景のドローアブルとして設定する必要があります。このソリューションに従ってLinearGradient、色をpositions配列にマッピングすることにより、コンストラクターで中心を設定できます。

float[] 位置

null の場合があります。色配列内の対応する各色の相対位置 [0..1]。これが null の場合、色はグラデーション ラインに沿って均等に分散されます。

(テストされていませんが、うまくいくはずです)

于 2013-01-17T16:47:31.997 に答える