Android图形 - Bitmap

1 概述
1.1 编写目的

学习Android图形Bitmap相关的知识,记录下来,方便后续学习及查询。

2 Bitmap图形

Bitmap图形,共有以下属性。

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/bitmap_280_180"
    android:alpha="1"
    android:antialias="true"
    android:autoMirrored="true"
    android:dither="true"
    android:filter="true"
    android:gravity="center"
    android:mipMap="true"
    android:tileMode="clamp"
    android:tileModeX="clamp"
    android:tileModeY="clamp"
    android:tint="@color/green"
    android:tintMode="add">
</bitmap>
2.1 Src属性

指向图片资源,不能使用shape、vector等自定义图形。

2.2 Alpha属性

透明度,["0~1" | "255~1"]透明到不透明。

2.3 Antialias属性

开关锯齿,["true" | "false"]。

2.4 AutoMirrored属性

设置图片是否需要镜像反转,当布局方向是RTL,即从右到左布局时才有用。

2.5 Dither属性

抖动,["true" | "false"]。值为“true”时,将在位图的像素配置与屏幕不同时(例如:ARGB 8888 位图和 RGB 565 屏幕)启用位图的抖动;值为“false”时则停用抖动。默认值为 true。


2.6 Filter属性

开关滤镜,["true" | "false"]。

2.7 Gravity属性
重心,["top " |" bottom "| " left "| " right "| " center "| " center_vertical "| " center_horizontal "| " fill "| " fill_vertical "| " fill_horizontal "| " clip_vertical "| " clip_horizontal"]。分别是:顶部、底部、左边、右边、中心、垂直中心、水平中心、填满容器、填满垂直方向、填满水平方向、剪切掉垂直方向多余容器部分、剪切掉水平方向多余容器部分。
2.8 MipMap属性
是否将图片标记为mipmap,使用mipmap能够提高显示性能,默认为false ,["true" | "false"]。
2.9 TileMode属性
TileMode:贴图模式, ["clamp" | "disable" | "repeat" | "mirror"]。
2.9.1 Clamp(边缘填充)

当图片>容器时,图片多余的部分会被截去;当图片<容器时,会复制图片的边缘部分填充空白。

创建my_bitmap.xml(图片宽868、高579):

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/bitmap_868_579">
</bitmap>
效果如下:

 


修改my_bitmap.xml为,其它不变:
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/bitmap_868_579"
    android:tileMode="clamp">
</bitmap>

效果如下:


修改my_bitmap.xml为(图片宽280、高180):
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/bitmap_280_180"
    android:tileMode="clamp">
</bitmap>

效果如下:


2.9.2 Disable(缩放)

图片会根据容器大小进行缩放(默认值),如2.9.1第一图所示。

2.9.3 Repeat(重复填充)
图片会重复填充满容器。但是当图片>容器时,多余部分会被截去。
修改my_bitmap.xml为(图片宽280、高180):
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/bitmap_280_180"
    android:tileMode="repeat">
</bitmap>

效果如下:


修改my_bitmap.xml为(图片宽868、高579):
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/bitmap_868_579"
    android:tileMode="repeat">
</bitmap>

效果如下:


2.9.4 Mirror(镜像重复填充)
图片会以镜像重复的形式填满容器。同样,当图片>容器时,多余部分会被截去。
修改my_bitmap.xml为(图片宽280、高180):
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/bitmap_280_180"
    android:tileMode="mirror">
</bitmap>

效果如下:


修改my_bitmap.xml为(图片宽868、高579):
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/bitmap_868_579"
    android:tileMode="mirror">
</bitmap>
效果如下:
 
2.10 TileModeX属性

单独控制bitmap的X轴TileMode属性,覆盖TileMode属性。

修改my_bitmap.xml为(图片宽280、高180):
<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/bitmap_280_180"
    android:tileMode="mirror"
    android:tileModeX="mirror"
    android:tileModeY="clamp">
</bitmap>

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@drawable/bitmap_280_180"
    android:tileModeX="mirror"
    android:tileModeY="clamp">
</bitmap>

效果如下:


2.11 TileModeY属性
单独控制bitmap的Y轴TileMode属性,覆盖TileMode属性,如2.10所示。
2.12 Tint属性
设置着色。
2.13 TintMode属性
着色模式和Tint一起使用,["src_over" | "src_in" | "src_atop" | "screen"| "add"| "multiply"]。下面分别为着色tint="#FF00FF00"和tint="#8800FF00"在各种着色模式下面的效果。
2.13.1 Src_over


2.13.2  Src_in


2.13.3 Src_atop


2.13.4 Screen

2.13.5 Add

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值