Android——XML中的Bitmap资源

在xml中的drawable/目录下可以创建Bitmap资源,这样可以将一张图片直接转换成bitmap,并给它设置一些属性,它指向一个BitmapDrawable对象。

调用方法

在xml中:

格式:@[package:]drawable/filename
<ImageView
android:layout_height="wrap_content"
android:layout_width="wrap_content"
android:src="@drawable/bitmap"/>

在Java中:

格式:R.drawable.filename
Resources res =getResources();
Drawable drawable = res.getDrawable(R.drawable.bitmap);

语法

<?xml version="1.0" encoding="utf-8"?>
<bitmap
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:src="@[package:]drawable/drawable_resource"
    android:antialias=["true" | "false"]
    android:dither=["true" | "false"]
    android:filter=["true" | "false"]
    android:gravity=["top" | "bottom" | "left" | "right" | "center_vertical" |
                      "fill_vertical" | "center_horizontal" | "fill_horizontal" |
                      "center" | "fill" | "clip_vertical" | "clip_horizontal"]
    android:mipMap=["true" | "false"]
    android:tileMode=["disabled" | "clamp" | "repeat" | "mirror"] />

常用的9个属性:

属性作用
src在这里引用图片资源
antialias开启或关闭抗锯齿
dither开启或关闭图像抖动。当使用图片的dpi和屏幕不匹配时,开启图像抖动可以获得更好的显示效果
filter开启或关闭滤镜。当需要对图片进行缩放操作时,开启滤镜可以使图片更加平滑
tiltMode贴图模式。详细见下文。该属性与gravity是互斥的。
gravity重心。详细见下文。该属性与tileMode是互斥的。
tint设置着色。有种盖一个色层在图片上的感觉。
tintMode设置着色模式。详细见下文。
mipMap是否将图片标记为mipmap,使用mipmap能够提高显示性能,默认为false

android:tileMode属性

贴图模式有以下几种:

效果
clamp当图片>容器时,图片多余的部分会被截去;当图片<容器时,会复制图片的边缘部分填充空白
disable图片会根据容器大小进行缩放。这是默认值
repeat图片会重复填充满容器。但是当图片>容器时,多余部分会被截去
mirror图片会以镜像重复的形式填满容器。同样,当图片>容器时,多余部分会被截去

android:gravity属性

当图片<容器时,重心决定了它在容器中的位置。
重心有以下几种:

效果
top顶部
bottom底部
left左边
right右边
center中心
center_vertical垂直中心
center_horizontal水平中心
fill充满容器,和tileMode=”disable”是一个效果
fill_vertical充满垂直方向
fill_horizontal充满水平方向
clip_vertical搞不懂是什么鬼?求大神解答
clip_horizontal搞不懂是什么鬼?求大神解答

android:tintMode属性

着色模式有以下几种:

效果
add
src_in
src_over
src_atop以上几种全把图片给遮住了,看不出有什么差别。求指导!
mutiply着色与透明度相结合,相当于在图片上盖了一层不是很深的颜色
screen同上,但是颜色会更浅

一个例子

<?xml version="1.0" encoding="utf-8"?>
<bitmap xmlns:android="http://schemas.android.com/apk/res/android"
    android:alpha="1"
    android:antialias="true"
    android:dither="true"
    android:filter="true"
    android:gravity="clip_vertical"
    android:src="@drawable/share"
    android:tint="#fc747e"
    android:tintMode="multiply" />

效果图:
效果图

  • 5
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android,可以使用多种方式来读取图片并生成Bitmap对象。以下是几种常见的方法: 1. 使用文件流方式读取图片: ``` FileInputStream fis = new FileInputStream("/sdcard/test.png"); Bitmap bitmap = BitmapFactory.decodeStream(fis); ``` 2. 使用R文件方式读取图片: ``` Bitmap bitmap = BitmapFactory.decodeResource(this.getContext().getResources(), R.drawable.test); ``` 3. 使用ResourceStream方式读取图片,但不使用R文件: ``` Bitmap bitmap = BitmapFactory.decodeStream(getClass().getResourceAsStream("/res/drawable/test.png")); ``` 在读取图片时,还可以通过设置BitmapFactory.Options来进行一些优化操作。例如,可以设置inSampleSize来减小图片的宽高,从而减少内存占用: ``` BitmapFactory.Options options = new BitmapFactory.Options(); options.inSampleSize = 2; // 图片宽高都为原来的二分之一,即图片为原来的四分之一 Bitmap bitmap = BitmapFactory.decodeStream(fis, null, options); ``` 需要注意的是,以上方法的路径或资源ID需要根据实际情况进行修改。此外,在使用ImageView显示Bitmap时,可以通过开启视图缓存的方式来获取缓存的Bitmap对象: ``` imageView.setDrawingCacheEnabled(true); Bitmap bitmap = Bitmap.createBitmap(imageView.getDrawingCache()); imageView.setDrawingCacheEnabled(false); ``` 最后,根据需要对获取到的Bitmap对象进行进一步的处理,例如模糊处理等。 #### 引用[.reference_title] - *1* [安卓Bitmap读取图片](https://blog.csdn.net/zbuger/article/details/46895335)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *2* [Android从ImageView取出图片bitmap注意事项](https://blog.csdn.net/u013933272/article/details/50987092)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [Android学习 | 10.使用位图工具Bitmap在存储卡上读写图片文件](https://blog.csdn.net/M_Nobody/article/details/126141636)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值