编辑:当我有一个教程
当您要动态绘制一些二维图形时,ShapeDrawable对象可能会满足您的需求.使用ShapeDrawable,您可以以编程方式绘制基本形状并以任何可以想象的方式对其进行样式设置.
ShapeDrawable是Drawable的扩展,因此可以在希望使用Drawable的任何地方使用它-也许是将View设置为setBackgroundDrawable()的背景.当然,您也可以将形状绘制为自己的自定义View,添加它到您的布局,但是请.由于ShapeDrawable具有其自己的draw()方法,因此可以创建View的子类,该子类在View.onDraw()方法期间绘制ShapeDrawable.这是View类的基本扩展,它执行此操作,以将ShapeDrawable绘制为View:
public class CustomDrawableView extends View {
private ShapeDrawable mDrawable;
public CustomDrawableView(Context context) {
super(context);
int x = 10;
int y = 10;
int width = 300;
int height = 50;
mDrawable = new ShapeDrawable(new OvalShape());
mDrawable.getPaint().setColor(0xff74AC23);
mDrawable.setBounds(x, y, x + width, y + height);
}
protected void onDraw(Canvas canvas) {
mDrawable.draw(canvas);
}
}
在构造函数中,将ShapeDrawable定义为OvalShape.然后为其指定颜色,并设置形状的边界.如果未设置边界,则不会绘制形状,而如果未设置颜色,则默认为黑色.
使用定义的自定义视图,可以按您喜欢的任何方式绘制它.通过上面的示例,我们可以在Activity中以编程方式绘制形状:
CustomDrawableView mCustomDrawableView;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
mCustomDrawableView = new CustomDrawableView(this);
setContentView(mCustomDrawableView);
}
如果要从XML布局而不是从Activity绘制此自定义可绘制对象,则CustomDrawable类必须重写View(Context, AttributeSet)构造函数,该构造函数在通过XML的膨胀实例化View时调用.然后将CustomDrawable元素添加到XML,如下所示:
android:layout_width="fill_parent"
android:layout_height="wrap_content"
/>
ShapeDrawable类(像android.graphics.drawable包中的许多其他Drawable类型一样)使您可以使用公共方法定义drawable的各种属性.您可能需要调整的一些属性包括Alpha透明度,滤色器,抖动,不透明度和颜色.
您还可以使用XML定义基本可绘制形状.有关更多信息,请参见Drawable Resources document中有关形状可绘制对象的部分.
试试吧 :
android:layout_width="fill_parent"
android:layout_height="fill_parent">
android:layout_width="fill_parent"
android:layout_height="fill_parent"/>
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:cacheColorHint="#00000000"/>
并将您的自定义可绘制对象设置为ImageView.
希望这会起作用. ?