📅  最后修改于: 2023-12-03 15:13:21.287000             🧑  作者: Mango
在 Android 中,Drawable 是用来描述可画的所有可视化对象的基本类。在这个类中,可以找到一些重要的子类来描述不同的 Drawable 类型,包括 BitmapDrawable、ShapeDrawable、LayerDrawable 和 VectorDrawable 等。Drawable 对象可以用来绘制不同的形状、图像和文本,并且可以用于构建自定义视图类及其他 UI 元素。
在 Android 应用中使用 Drawable 可以有不同的方法。下面介绍三种主要的方法:
可以在 XML 布局文件或者 drawable 资源文件中使用 Drawable,例如:
<!-- 在 ImageView 中使用bitmap drawable -->
<ImageView
android:id="@+id/image_view"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/my_bitmap" />
<!-- 在 Button 中使用 shape drawable -->
<Button
android:id="@+id/button"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Click me"
android:background="@drawable/my_shape" />
可以在 Java 代码中创建并使用 Drawable,例如:
// 创建 BitmapDrawable
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
imageView.setImageDrawable(drawable);
// 创建 ShapeDrawable
ShapeDrawable drawable = new ShapeDrawable(new RectShape());
drawable.getPaint().setColor(Color.RED);
drawable.getPaint().setStyle(Paint.Style.FILL);
button.setBackground(drawable);
可以将 Drawable 储存在 res/drawable 目录下,以在应用中复用它们,例如:
res/drawable/my_bitmap.png
res/drawable/my_shape.xml
BitmapDrawable 用于绘制 Bitmap 对象。它提供了一些方法来控制图像如何缩放和移动,例如 setGravity() 和 setTileMode()。例如,下面使用 BitmapDrawable 设置 ImageView 的图片:
Drawable drawable = new BitmapDrawable(getResources(), bitmap);
imageView.setImageDrawable(drawable);
ShapeDrawable 可以用来绘制几何形状,包括矩形、圆角矩形、椭圆和圆形等。例如,下面使用 ShapeDrawable 设置 Button 的背景:
ShapeDrawable drawable = new ShapeDrawable(new RectShape());
drawable.getPaint().setColor(Color.RED);
drawable.getPaint().setStyle(Paint.Style.FILL);
button.setBackground(drawable);
LayerDrawable 可以用来绘制多个 Drawable 对象的层次结构,类似于 Photoshop 中的图层。例如,下面创建了一个包含两个矩形的 LayerDrawable:
ShapeDrawable rect1 = new ShapeDrawable(new RectShape());
rect1.getPaint().setColor(Color.RED);
rect1.getPaint().setStyle(Paint.Style.FILL);
ShapeDrawable rect2 = new ShapeDrawable(new RectShape());
rect2.getPaint().setColor(Color.BLUE);
rect2.getPaint().setStyle(Paint.Style.FILL);
Drawable[] layers = { rect1, rect2 };
LayerDrawable drawable = new LayerDrawable(layers);
imageView.setImageDrawable(drawable);
VectorDrawable 是一个可缩放矢量图形,可以无损放大或缩小,不会失真。它还可以在不同的设备和不同的分辨率下呈现良好的效果。例如,下面使用 VectorDrawable 设置 ImageView 的图片:
Drawable drawable = getResources().getDrawable(R.drawable.vector_icon);
imageView.setImageDrawable(drawable);
Drawable 是 Android 中一个非常重要的类,并且提供了多种子类用于绘制不同类型的可视化对象。我们可以在 XML 布局文件、Java 代码和资源文件中使用 Drawable,以便快速创建自定义的 UI 元素。如果您需要更多关于 Drawable 的信息,请查阅官方文档。