Android 自定义图片资源

一、重复图片的平铺利用 -- BitmapDrawable.java

使用XML方式平铺,简单、固定

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:antialias="true"
    android:dither="true"
    android:src="@drawable/ic_launcher"
    android:tileMode="repeat" >

</bitmap>

1.antialias

是否启用抗锯齿功能

2.dither

是否启用抖动效果

抖动:图像的抖动处理,当每个颜色值以低于8位表示时,对应图像做抖动处理可以实现在可显示颜色总数比较低(比如256色)时还保持较好的显示效果

3.filter

是否允许对位图进行滤波。对位图进行收缩或者延展使用滤波可以获得平滑的外观效果。

4.gravity[与tileMode同时使用失效]

top

将图像放置在容器的顶部,不改变图像大小

bottom

将图像放置在容器的底部,不改变图像大小

left

将图像放置在容器的左边,不改变图像大小

right

将图像放置在容器的右边,不改变图像大小

center_vertical

将图像放置在容器垂直方向中间,不改变图像的大小

fill_vertical

将图像垂直方向拉伸,填满容器

center_horizontal

将图像放置在容器水平方向中间,不改变图像大小

fill_horizontal

将图像水平方向拉伸,填满容器

center

将图像放置在容器的水平和垂直方向中间,不改变图像大小

fill(默认)

将图像水平方向和垂直方向拉伸,填满容器

clip_vertical

附加选项,用于按照容器的边来剪切对象的顶部和/或底部的内容. 剪切基于其纵向对齐设置:顶部对齐时,剪切底部;底部对齐时剪切顶部;除此之外剪切顶部和底部,垂直方向裁剪.

clip_horizontal

附加选项,用于按照容器的边来剪切对象的左侧和/或右侧的内容. 剪切基于其横向对齐设置:左侧对齐时,剪切右侧;右侧对齐时剪切左侧;除此之外剪切左侧和右侧.水平方向裁剪

5.mipMap

是否使用文理映射过滤提示

6.tileMode 图片的显示模式:

disabled

默认值,表示不使用平铺

clamp

复制边缘色彩

repeat

X、Y 轴进行重复图片显示,也就是我们说要说的平铺

mirror

在水平和垂直方向上使用交替镜像的方式重复图片的绘制

7.autoMirrored

当layout direction 改变是,是否自动镜像图

代码实现平铺,更为灵活,不太方便

Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
				R.drawable.bg_tile);
BitmapDrawable drawable = new BitmapDrawable(bitmap);
drawable.setTileModeXY(TileMode.CLAMP, TileMode.REPEAT);
drawable.setDither(true);
getWindow().getDecorView().setBackgroundDrawable(drawable);

二、层叠图片的堆加 -- LayerDrawable.java

<?xml version="1.0" encoding="utf-8"?>
<layer-list xmlns:android="http://schemas.android.com/apk/res/android" >

    <item
        android:bottom="0dp"
        android:drawable="@drawable/background"
        android:left="0dp"
        android:right="0dp"
        android:top="0dp">
    </item>
    <item
        android:bottom="50dp"
        android:drawable="@drawable/head"
        android:left="50dp"
        android:right="50dp"
        android:top="50dp">
    </item>
    <item
        android:bottom="100dp"
        android:drawable="@drawable/ic_launcher"
        android:left="100dp"
        android:right="100dp"
        android:top="100dp">
    </item>

</layer-list>

三、嵌入性边距图片 -- InsetDrawable.java

<?xml version="1.0" encoding="utf-8"?>
<inset xmlns:android="http://schemas.android.com/apk/res/android"
    android:drawable="@drawable/background"
    android:insetBottom="200dp"
    android:insetLeft="100dp"
    android:insetRight="200dp"
    android:insetTop="100dp"
    android:visible="true" >

</inset>

四、多级图片选择 -- LevelListDrawable.java

setLevel()来设定图片

<?xml version="1.0" encoding="utf-8"?>
<level-listxmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:drawable="@drawable/status_off"
        android:maxLevel="0"/>
    <item
        android:drawable="@drawable/status_on"
        android:maxLevel="1"/>
</level-list>

等等

转载于:https://my.oschina.net/u/1770617/blog/363857

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值