Drawable是 Android 中用于绘制图形和图像的强大工具

Drawable 是 Android 中用于绘制可绘制对象的基本类,它可以是位图、形状、图层列表等。Drawable 可以用于在界面上绘制图形、背景、图标等。以下是有关 Drawable 的知识总结和使用办法,附加了详细的代码示例:

1. 创建 Drawable 对象: 你可以使用以下方法来创建不同类型的 Drawable 对象。

  • BitmapDrawable: 从位图创建 Drawable

    Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.icon);
    Drawable drawable = new BitmapDrawable(getResources(), bitmap);
    
  • ShapeDrawable: 创建基本形状的 Drawable,如矩形、椭圆、圆形等。

    ShapeDrawable shapeDrawable = new ShapeDrawable(new RectShape());
    
  • LayerDrawable: 创建多个图层的 Drawable

    Drawable[] layers = new Drawable[2];
    layers[0] = getResources().getDrawable(R.drawable.background);
    layers[1] = getResources().getDrawable(R.drawable.icon);
    LayerDrawable layerDrawable = new LayerDrawable(layers);
    

2. 设置 Drawable 你可以设置 Drawable 的属性,如边界、颜色、形状等。

  • 设置边界:

    drawable.setBounds(0, 0, width, height);
    
  • 设置颜色:

    if (drawable instanceof ShapeDrawable) {
        ShapeDrawable shapeDrawable = (ShapeDrawable) drawable;
        shapeDrawable.getPaint().setColor(Color.RED);
    }
    

3. 在界面上绘制 Drawable 你可以在布局文件中使用 ImageView 或其他 View 来显示 Drawable

<ImageView
    android:id="@+id/imageView"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/my_drawable" />

或者在代码中设置 Drawable

ImageView imageView = findViewById(R.id.imageView);
imageView.setImageDrawable(drawable);

4. 动态绘制 Drawable 你可以使用 Canvas 来动态绘制 Drawable,例如绘制自定义形状、文本等。

Bitmap bitmap = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Canvas canvas = new Canvas(bitmap);
drawable.setBounds(0, 0, width, height);
drawable.draw(canvas);

5. 从资源加载 Drawable 通常,你会从资源中加载 Drawable

Drawable drawable = getResources().getDrawable(R.drawable.icon);

6. 使用 StateListDrawable StateListDrawable 允许你在不同状态下显示不同的 Drawable,如正常状态、按下状态等。

<selector xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/normal_drawable" android:state_pressed="false" />
    <item android:drawable="@drawable/pressed_drawable" android:state_pressed="true" />
</selector>

这个示例创建了一个状态选择器,根据按钮的按下状态来显示不同的 Drawable

补充Android 中的 StateListDrawable的取值:

  1. state_activated:表示当前状态,通常用于表示被按下或选中的按钮。
  2. state_pressed:表示按下状态,通常用于表示按下但未放开的按钮。
  3. state_selected:表示选中状态,通常用于表示被选中的列表项或复选框。
  4. state_checkable_selected:表示选中且可选中的状态,通常用于表示可选中的单选框或复选框。
  5. state_enabled:表示可用状态,通常用于表示可点击的按钮或可选择的列表项。
  6. state_disabled:表示不可用状态,通常用于表示不可点击的按钮或不可选择的列表项。
  7. state_checked:表示选中且已勾选的状态,通常用于表示已勾选的复选框。
  8. state_window_focused:表示窗口获取焦点的状态,通常用于表示当前具有焦点的输入框。
  9. state_default:表示默认状态,通常用于表示未设置特定状态的其他元素。

7. 使用 VectorDrawable VectorDrawable 允许以矢量形式绘制图形,以便在不同屏幕密度上获得更好的图像质量。

<vector xmlns:android="http://schemas.android.com/apk/res/android"
    android:width="24dp"
    android:height="24dp"
    android:viewportWidth="24.0"
    android:viewportHeight="24.0">
    <path
        android:fillColor="#FF000000"
        android:pathData="M12,2C6.48,2 2,6.48 2,12s4.48,10 10,10s10,-4.48 10,-10S17.52,2 12,2z M12,20c-4.41,0 -8,-3.59 -8,-8s3.59,-8 8,-8s8,3.59 8,8s-3.59,8 -8,8zM11,7h2v7h-2z"/>
</vector>

这是一个简单的 VectorDrawable 示例,它描述了一个矢量图标。

Drawable 是 Android 中用于绘制图形和图像的强大工具,可以用于实现各种界面元素的自定义外观和行为。根据需要选择不同类型的 Drawable,并设置相应的属性,以满足你的应用程序需求。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

WiFiMing

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值