Android GraadientDrawable類の詳細は、activityの背景色のグラデーション効果を設定します.
回転: http://www.imobilebbs.com/wordpress/?p=1620
この例のタイトルのRoundRectsを見て、私の第一印象はRoundRectShapeを紹介しています.例を挙げてコードを見ましたが、GradientDrawableを使って実現しました.
GraadientDrawableはグラデーションを使って図形を描くことをサポートしています.通常はButtonや背景パターンとして使用できます.
GraadientDrawableでは、描画パターンの種類を指定できます.LINE、OVAL、RECTANGLEまたはRING ,色のグラデーションはLINE EAR(u)をサポートします.GRADIENT、RADIAL_GRADIENT 和 SWEEP_GRADIENT
この中でRECTANGLE(矩形)を使用して、長方形の四角い角を円角に設定することもできます.各円角の半径はそれぞれ設定できます.
public void set CornerRadii(float[]radii)
ラジディリ配列はそれぞれ4つの円角の半径を指定し、各角は[XuRadius,YuRadius]を指定し、4つの円角の順序は左上,右上,左下,左下とする.X_ならRadius,Y_Radiusは0ですか?直角ですか?
色のグラデーションの方向は、GradientDrawable.Orientationによって定義されています.
GraadientDrawableの構造関数を見てください.
public GraadientDrawable orentation,int[]colors)
oricentationはグラデーションの方向を指定しています.グラデーションの色はcolors配列で指定されています.配列の各値は一つの色です.
この例では、グループの左上から右下までのグラデーションの方向を定義します.グラデーションの色は赤、緑、青の3色です.
1
2
3
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
この例のタイトルのRoundRectsを見て、私の第一印象はRoundRectShapeを紹介しています.例を挙げてコードを見ましたが、GradientDrawableを使って実現しました.
GraadientDrawableはグラデーションを使って図形を描くことをサポートしています.通常はButtonや背景パターンとして使用できます.
GraadientDrawableでは、描画パターンの種類を指定できます.LINE、OVAL、RECTANGLEまたはRING ,色のグラデーションはLINE EAR(u)をサポートします.GRADIENT、RADIAL_GRADIENT 和 SWEEP_GRADIENT
この中でRECTANGLE(矩形)を使用して、長方形の四角い角を円角に設定することもできます.各円角の半径はそれぞれ設定できます.
public void set CornerRadii(float[]radii)
ラジディリ配列はそれぞれ4つの円角の半径を指定し、各角は[XuRadius,YuRadius]を指定し、4つの円角の順序は左上,右上,左下,左下とする.X_ならRadius,Y_Radiusは0ですか?直角ですか?
色のグラデーションの方向は、GradientDrawable.Orientationによって定義されています.
GraadientDrawableの構造関数を見てください.
public GraadientDrawable orentation,int[]colors)
oricentationはグラデーションの方向を指定しています.グラデーションの色はcolors配列で指定されています.配列の各値は一つの色です.
この例では、グループの左上から右下までのグラデーションの方向を定義します.グラデーションの色は赤、緑、青の3色です.
1
2
3
mDrawable =
new
GradientDrawable(GradientDrawable.Orientation.TL_BR,
new
int
[] {
0xFFFF0000
,
0xFF00FF00
,
0xFF0000FF
});
それぞれLiner、RadialとSweepの3種類のグラデーションモードを使って、そして指定の長方形の4つの角の円角の半径に協力して、GraadientDrawableの異なった使い方を表示します.1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
setCornerRadii(mDrawable, r, r,
0
,
0
);
mDrawable.draw(canvas);
...
mDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);
setCornerRadii(mDrawable,
0
,
0
, r, r);
mDrawable.draw(canvas);
...
mDrawable.setGradientType(GradientDrawable.SWEEP_GRADIENT);
setCornerRadii(mDrawable,
0
, r, r,
0
);
mDrawable.draw(canvas);
...
mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);
setCornerRadii(mDrawable, r,
0
,
0
, r);
mDrawable.draw(canvas);
...
mDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);
setCornerRadii(mDrawable, r,
0
, r,
0
);
mDrawable.draw(canvas);
...
mDrawable.setGradientType(GradientDrawable.SWEEP_GRADIENT);
setCornerRadii(mDrawable,
0
, r,
0
, r);
mDrawable.draw(canvas);
...
static
void
setCornerRadii(GradientDrawable drawable,
float
r0,
float
r1,
float
r2,
float
r3) {
drawable.setCornerRadii(
new
float
[] { r0, r0, r1, r1,
r2, r2, r3, r3 });
}