android中drawable的自建资源

本文详细介绍了Android中Drawable资源的多种类型,包括Bitmap、Shape、Layer List和State List Drawable等,并解释了它们各自的属性及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


Drawable 资源图:bitmap   shape   layer stateList
bitmap :
  <?xml version="1.0" encoding="utf-8"?>
  <bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="bitmap——id"          指定图片
    android:antialias="true | false"   图片是否开启抗锯齿功能
    android:dither="true | false"      是否开启抖动功能:可以让高质量图片在低质量屏幕显示的好
    android:filter="true | false"      过滤效果,图片被拉伸或压缩时,可以保持较好的效果
    android:gravity="top | bottom | left ....."   图片小与容器,可以对图片进行定位
    android:mipMap="true | false"
    android:tileMode="disabled | clamp | repeat | mirror " 平铺模式


shape: 用颜色来构建图形。有纯色 有渐变
 <? xml version="1.0" encoding="utf-8"?>
 <shape
     xmlns:android="http//schemas.android.com/apk/res/android"
     android:shape="rectangle | oval | line | ring">  矩形 椭圆 横线 圆环
     <corners      设置四个角的角度
        android:radius="integer"    四个角设定相同角度
        android:topLeftRadius="integer"    左上角度
        android:topRightRadius="integer"
        android:bottomLeftRadius="integer"
        android:bottomRightRadius="integer" />

    <gradientsolid标签相互排斥,颜色渐变填充,
        android:angle="integer"  渐变的角度,默认0,其之必须为45的倍数,0从做到右 90从下到上
        android:centerX="integer"  渐变的中心点的横坐标
        android:centerY="integer"
        android:centerColor="color"  渐变的中间色
        android:endColot="color"  渐变结束的颜色
        android:gradientRadius="integer"  渐变半径, 仅当android:type="radial"有效
        android:startColor="color"   渐变开始的颜色
        android:type="linear | radial | sweep"  渐变类型。线性渐变  径向渐变  描线渐变
        android:useLevel="true | false" />  一般为false  当statelistDrawable时有用
    <padding  空白,表示包含它的view的空白
        android:left|top|right|bottom="integer"/>
    <size
        android:width="integer"
        android:height="integer"/>
    <solid   表示颜色纯色填充,
        andorid:color="color"/>
    <stroke      shape描边
        android:width="integer"    描边宽度
        android:color="color"      描边颜色
        android:dashWidth="integer"   组成虚线的线段的宽度
        android:dashGap="integer"/>   组成虚线的线段之间的间隔,
</shape>

在shape类型中ring圆环有5个特殊的属性。
  android:innerRadius 圆环内半径 与innerRadiusRatio同时存在,
  android:innerRadiusRatio 内半径占整个drawable宽度的比例,默认为9, 若为n 那么内半径=宽度/n
  android:thickness 圆环厚度,就是圆外半径减去内半径,和thicknessRatio同时存在,
  android:thicknessRadio 厚度占整个圆环宽度的比,默认为3, 若为n 那么厚度=宽度/n
  android:useLevel  一般使用为false, 一般没有效果,但在levelListDrawable中来使用好。



Layer :对应的标签<layer_list>一种层次叠加的drawable集合
  <? xml version="1.0" encoding="utf-8">
  <layer-list
      xmlns:....>
    <item   多个item,每个item表示一个drawable
      android:drawable=" "
      android:id=" "
      android:top|right|bottom|left ="dimension"
  </layer-list>



stateListDrawable : <selector> 可以根据点击切换view背景
<?xml version="1.0" encoding="utf-8">
<selector
    xmlns:android="  "
    android:constantSize="true | false"   固有大小是否不随着其状态而改变。
    android:dither="true | false"       是否开启抖动效果
    android:variablePadding="true | false ">      padding是否随着其状态改变而改变。

    <item
       android:drawable=" "   加载的图片
       android:state_pressed="true | false"  表示按下状态
       android:state_focused="true | false"   以获得焦点
       android:state_hovered="true | false"
       android:state_selected="true | false"   表示用户选择了view
       android:state_checked="true | false"   表示用户选中,一般使用checkbox
       android:state_enabled="true | false"   表示view当前处于可用状态
       android:state_activated="true | false"
       android_state_window_focused="true | false" />
</selector>


还有: insetDrawable  TransitionDrawable   ScaleDrawable  clipDrawable 

(2)在ListView的item界面中添加如下属性代码
[html] view plain copy
android:background=”@drawable/mylist_view”

(3)利用JAVA代码直接编写
[java] view plain copy
Drawable drawable = getResources().getDrawable(R.drawable.mylist_view);
listView.setSelector(drawable);

### 如何在 Android Studio 中创建资源库 要在 Android Studio 中创建资源库,可以按照以下方式操作: #### 创建新的模块作为资源库 通过 `File -> New -> New Module` 菜单选项来启动新模块向导。选择 `Java Library` 或者 `Android Library` 来创建一个新的库模块[^4]。 对于仅包含 Java 类其他非 UI 文件(如 XML 配置文件)的简单库,可以选择 `Java Library`;如果需要支持 Android 特定功能,则应该选择 `Android Library`。 #### 添加图片或其他资源到库中 一旦创建好库模块,在该模块下的目录结构里会有默认生成的一些文件夹,比如用于放置图像资产的 drawable 文件夹[^3]。为了适配多种屏幕密度,建议手动增加几个额外的分辨率特定版本的 drawable 文件夹,像这样命名它们:`drawable-hdpi`, `drawable-mdpi`, `drawable-xhdpi`, `drawable-xxhdpi`。这些分别对应高、中、超高以及超超高像素密度设备上的图形表示形式。 #### 将自定义库集成至主应用项目 完成上述步骤之后,还需要修改主应用程序的构建脚本(build.gradle),使得它可以识别加载刚才建立起来的新子模块(即我们的资源库)。这通常涉及到编辑顶级设置(setup)文档(settings.gradle), 确认其中包含了类似下面这样的条目:`include ':app', ':mylibrary'`(这里的`:mylibrary`就是指代刚刚新增的那个库)[^2]。接着回到 app 的 build.gradle 文件内部,在 dependencies 块之下追加一行类似于如下所示的内容: implementation project(':mylibrary')。 ```gradle // settings.gradle include ':app', ':mylibrary' // app/build.gradle dependencies { ... implementation project(':mylibrary') } ``` 以上过程描述了整个从零开始直至成功关联自制资源库进入现有安卓工程的工作流程。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值