Shape 能够绘制:
line 线性
oval 椭圆形
rectangle 矩形
ring 环形
xml当中Shape:
<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
android:shape="rectangle" >
<solid android:color="#DFDFE0" />
<corners
android:bottomLeftRadius="8dp"
android:bottomRightRadius="8dp"
android:topLeftRadius="8dp"
android:topRightRadius="8dp" />
<stroke
android:width="3dp"
android:color="#2E3135" />
</shape>
Java 代码
// prepare
int strokeWidth = 5; // 3px not dp
int roundRadius = 15; // 8px not dp
int strokeColor = Color.parseColor("#2E3135");
int fillColor = Color.parseColor("#DFDFE0");
GradientDrawable gd = new GradientDrawable();
gd.setColor(fillColor);
gd.setCornerRadius(roundRadius);
gd.setStroke(strokeWidth,strokeColor)
Java代码绘制Shape的全部的属性
GradientDrawable gradientDrawable1 = new GradientDrawable();
// 形状-圆角矩形
gradientDrawable1.setShape(GradientDrawable.RECTANGLE);
// 圆角
gradientDrawable1.setCornerRadius(8);
int alpha = 255;
int red = 55 + mRandom.nextInt(100);
int green = 55 + mRandom.nextInt(100);
int blue = 55 + mRandom.nextInt(100);
// 随机颜色
gradientDrawable1.setColor(Color.argb(alpha, red, green, blue));
// 2
GradientDrawable gradientDrawable2 = new GradientDrawable();
gradientDrawable2.setShape(GradientDrawable.RECTANGLE);
gradientDrawable2.setCornerRadius(8);
gradientDrawable2.setColor(Color.GRAY);
// 状态选择器
StateListDrawable stateListDrawable = new StateListDrawable();
// 按下状态的背景
stateListDrawable.addState(new int[]{android.R.attr.state_pressed}, gradientDrawable2);
// 常规状态的背景
stateListDrawable.addState(new int[]{}, gradientDrawable1);
// 应用到控件 -- API level 16
view.setBackground(stateListDrawable);flowLayout.addView(view); //触发重绘