android应用中常常需要加载R.drawable下的图片资源到ImageView中显示出来。而且常常会遇到图片缩放的问题,缩放的关键是Matrix(矩阵方式)。加载资源图片以及缩放的语法是非常典型的一种写法,这里不妨把它记录下来:
加载图片
//显示图片的ImageView组件
ImageView imageView;
//初始的图片资源
Bitmap bitmap;
//图片的宽和高、当前缩放比、控制缩放的矩阵
int width, height;
Matrix matrix;
float curScale = 1;
imageView = (ImageView) findViewById(R.id.image);
matrix = new Matrix();
//获取源图片
bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.flower);
//或者可以这样获取(不是从R.drawable.xx下加载时)
Bitmap bitmap = BitmapFactory.decodeFile(String pathName));
//获得位图宽和高
width = bitmap.getWidth();
height = bitmap.getHeight();
//设置imageview初始化时显示的图片
imageView.setImageBitmap(bitmap);
缩放图片
//重置matrix
matrix.reset();
//缩放matrix
matrix.setScale(curScale, curScale, 160, 200);
//根据原始位图和Matrix创建新图片
Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
//显示新的位图
imageView.setImageBitmap(bitmap2);
重点是获取源图片位图资源的语法:
bitmap = BitmapFactory.decodeResource(this.getResources(), R.drawable.flower);
以及根据原始位图和缩放矩阵创造新图片的语法:
Bitmap bitmap2 = Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, true);
另外,获取ImageView组件内的BitmapDrawable:
BitmapDrawable tmp = (BitmapDrawable) imageView.getDrawable();
分享到:
相关推荐
本文将深入探讨如何使用`ImageView`加载图片,包括根据图片名字加载和从应用资源(src)中加载图片。 首先,让我们了解`ImageView`的基本用法。在XML布局文件中,我们可以这样创建一个`ImageView`: ```xml ...
另外,可以考虑使用LruCache或 Glide 等库来管理图片资源,避免内存泄漏和提高图片加载效率。 六、布局设计 在XML布局文件中,需要为PhoneImageView设置合适的宽高,通常设置为wrap_content,以便自动适应图片大小...
当ImageView加载Bitmap时,会根据控件的大小和Bitmap的原始尺寸进行调整,以适应屏幕空间。这个过程涉及到了缩放操作。 缩放图片主要通过Matrix类来实现。Matrix是一个二维变换矩阵,可以执行平移、旋转、缩放等...
在Android中,我们可以使用Bitmap的rotate方法来旋转图片,但这通常需要先加载图片到内存,然后再进行旋转,可能会消耗大量资源。另一种方式是在ImageView的绘制过程中应用Matrix的postRotate方法,这样可以避免额外...
在Android布局文件中,我们可以创建一个ImageView并设置其属性,如图片资源ID或图片URL。例如,在XML布局中,我们可以这样定义ImageView: ```xml <ImageView android:id="@+id/imageView" android:layout_width=...
然而,原生的ImageView并不支持复杂的缩放功能,尤其是在用户需要查看大图或者实现类似图片浏览器的应用时,这成为一个限制。"Android 可缩放ImageView"是为了弥补这个不足,提供了一个支持用户交互式缩放的视图,...
源码可能展示了如何从本地文件系统、网络或者资源文件夹加载图片。 2. 缩放图片: ImageView支持两种缩放模式:CENTER和CENTER_CROP。默认是CENTER,保持图片原始比例居中显示,可能导致空白区域;CENTER_CROP则会...
`GlideImageView`的实现原理主要是通过对Glide的请求监听器(RequestListener)进行扩展,该接口提供了`onLoadStarted()`、`onResourceReady()`、`onLoadFailed()`等方法,分别对应图片加载开始、加载完成和加载失败...
4. 图片加载:使用库提供的方法加载图片,同时考虑内存和磁盘缓存策略。 需要注意的是,在使用这类库时,开发者应关注性能优化,避免因为图片过大或过度缩放导致内存泄漏和应用崩溃。合理设置图片尺寸和分辨率,...
在本文中,我们将深入探讨如何使用ImageView加载图片,包括从本地资源加载和从网络加载两种常见方式。 首先,加载本地资源中的图片是最基本的操作。在XML布局文件中,我们可以通过设置`<ImageView>`的`src`属性来...
ImageView是Android SDK中用于显示图像的视图,它可以加载各种格式的图片资源,如JPEG、PNG等。默认情况下,ImageView显示图片时并不会提供缩放功能。为了实现点击图片放大,我们可以借助一些第三方库,例如Glide或...
此外,为了让自定义控件能够像普通的ImageView一样在布局文件中使用,我们需要在res/layout/目录下创建一个xml布局文件,并在其中声明我们的自定义控件,同时设置属性,如图片资源等: ```xml android:layout_...
本篇文章将详细讲解如何在ImageView上指定位置添加图片,并实现图片的等比例缩放以及自适应。 首先,我们从基础开始,理解Android中的ImageView。ImageView是Android SDK提供的一个用于显示单个图像的视图组件。它...
该控件支持在后台线程加载图片,避免阻塞UI,提高应用的响应速度。同时,它可能采用了诸如Picasso、Glide或者Fresco等流行的Android图片加载库,这些库具有缓存机制,可以有效减少网络请求,提升用户体验。 2. **...
1. **设置ImageView**:首先,我们需要在XML布局文件中创建一个ImageView,并为其设置合适的初始大小和图片资源。例如: ```xml <ImageView android:id="@+id/imageView" android:layout_width="wrap_content" ...
`ImageView`组件是用于展示图像的关键元素,它可以显示从资源、网络或内存中的图片。本文将详细探讨如何通过设置`ImageView`的`scaleType`属性来实现图片按比例缩放。 首先,`scaleType`属性决定了`ImageView`如何...
首先,从网络异步加载图片资源是为了避免阻塞主线程,确保用户界面(UI)的流畅性。Android应用的主线程主要负责处理UI更新,如果在此线程中执行耗时操作,会导致应用无响应,用户体验下降。因此,我们需要使用异步...
这些库能够智能地在后台线程加载图片,处理图片的缩放、裁剪,并在完成时无缝地更新到ImageView中。 2. **内存缓存**: 内存缓存是一种高效的缓存策略,它将常用的数据存储在应用程序的内存中,以便快速访问。在...