`
chjmars
  • 浏览: 76056 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

Android 计算ImageView的大小

阅读更多

1.获取资源文件中图片的大小,最简单的最直接的方法,就是使用Drawable的getIntrinsicHeight()和getIntrinsicWidth();

2.利用Bitmap来获取其大小,本质上和第一种方式没什么区别:

 

/**
 * 计算ImageView的大小(BitmapDrawable)
 * 
 * @param resources
 * @param resourceId
 * @return
 */
public static int[] computeWH(Resources resources, int resourceId) {
	int[] wh = { 0, 0 };
	if (resources == null)
		return wh;
	Bitmap mBitmap = BitmapFactory.decodeResource(resources, resourceId);
	BitmapDrawable bDrawable = new BitmapDrawable(resources, mBitmap);
	wh[0] = bDrawable.getIntrinsicWidth();
	wh[1] = bDrawable.getIntrinsicHeight();

	return wh;
}

 

 3.可以利用BitmapFactory.Options的outWidth和outHeight两个参数获取其大小,下面给出简单的3种方法供参考:

注意:设置inJustDecodeBounds为true后,decodeFile并不分配空间,即,BitmapFactory解码出来的Bitmap为Null,但可计算出原始图片的长度和宽度。

/**
 * 计算ImageView的大小(decodeFileDescriptor)
 * 
 * @param imageFile
 * @return
 */
public static int[] computeWH_1(String imageFile) {
	int[] wh = { 0, 0 };
	if (imageFile == null || imageFile.length() == 0)
		return wh;
	try {
		FileDescriptor fd = new FileInputStream(imageFile).getFD();
		BitmapFactory.Options options = new BitmapFactory.Options();
		options.inSampleSize = 1;
		options.inJustDecodeBounds = true;
		BitmapFactory.decodeFileDescriptor(fd, null, options);
		if (options.mCancel || options.outWidth == -1
				|| options.outHeight == -1) {
			return wh;
		}
		wh[0] = options.outWidth;
		wh[1] = options.outHeight;

	} catch (Exception e) {
	}
	
	return wh;
}

 

/**
 * 计算ImageView的大小(decodeFile)
 * 
 * @param imgFile
 * @return
 */
public static int[] computeWH_2(String imgFile) {
	int[] wh = { 0, 0 };

	if (imgFile == null || imgFile.length() == 0)
		return wh;

	BitmapFactory.Options options = new BitmapFactory.Options();
	options.inSampleSize = 1;
	options.inJustDecodeBounds = true;
	BitmapFactory.decodeFile(imgFile, options);
	if (options.mCancel || options.outWidth == -1
			|| options.outHeight == -1) {
		return wh;
	}

	wh[0] = options.outWidth;
	wh[1] = options.outHeight;

	return wh;
}
/**
 * 计算ImageView的大小(decodeResource)
 * 
 * @param resources
 * @param resourceId
 * @return
 */
public static int[] computeWH_3(Resources resources, int resourceId) {
	int[] wh = { 0, 0 };
	if (resources == null)
		return wh;

	BitmapFactory.Options options = new BitmapFactory.Options();
	options.inSampleSize = 1;
	options.inJustDecodeBounds = true;
	BitmapFactory.decodeResource(resources, resourceId, options);
	if (options.mCancel || options.outWidth == -1
			|| options.outHeight == -1) {
		return wh;
	}

	wh[0] = options.outWidth;
	wh[1] = options.outHeight;

	return wh;
}
 

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics