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
3mDrawable = new  GradientDrawable(GradientDrawable.Orientation.TL_BR, new  int[] { 0xFFFF00000xFF00FF00, 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
29mDrawable.setGradientType(GradientDrawable.LINEAR_GRADIENT);setCornerRadii(mDrawable, r, r, 00);mDrawable.draw(canvas);...mDrawable.setGradientType(GradientDrawable.RADIAL_GRADIENT);setCornerRadii(mDrawable, 00, 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, 00, 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 });}