`
chjmars
  • 浏览: 77127 次
  • 性别: 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;
}
 

 

分享到:
评论

相关推荐

    android 圆形imageview实现 带自定定义大小

    这个“android圆形ImageView实现带自定义大小”的话题正是关于如何在Android应用中创建一个可以自由调整大小的圆形图片视图。 首先,我们可以创建一个自定义的ImageView子类,命名为CircleImageView。在该子类中,...

    android 在imageview上的指定位置添加图片 图片尺寸自适应

    一种方法是动态计算缩放比例,使得图片的宽高不超过ImageView的宽高: ```java float scaleWidth = Math.min((float) mainImageView.getWidth() / overlayImageView.getDrawable().getIntrinsicWidth(), (float) ...

    Android中ImageView的常用方法一览.pdf

    - **scaleType**:ImageView的缩放类型,包括center、centerCrop、centerInside、fitCenter、fitEnd、fitStart、fitXY等,用于控制图片如何适应ImageView的大小。 - **adjustViewBounds**:如果设置为true,...

    Android自定义ImageView实现缩放,回弹效果

    首先,我们创建一个新的Java类,继承自Android的ImageView类。这个类将会是我们自定义功能的核心: ```java public class CustomImageView extends ImageView { // 添加必要的属性和变量 } ``` ### 1. 实现缩放...

    Android源码——ImageView控件缩放和旋转图片源码.zip

    对于ImageView的优化,Android提供了inSampleSize参数,用于减小Bitmap的加载大小,减少内存消耗。通过设置合理的inSampleSize值,可以使得大图在加载时自动缩小到适合的大小,再由ImageView进行后续的缩放处理。 ...

    Android 圆角ImageView-IT计算机-毕业设计.zip

    【Android圆角ImageView详解】 在Android开发中,我们经常需要为ImageView添加圆角效果,以实现各种美观的界面设计。这个“Android 圆角ImageView”项目是一个毕业设计的学习示例,它展示了如何自定义一个ImageView...

    Android imageview添加水印

    `Android imageview添加水印`这个话题就是关于如何在ImageView组件上动态地添加水印。通常,我们可以通过自定义ImageView控件来实现这一功能,这样做有以下几个好处: 1. **提高代码复用性**:自定义控件可以封装...

    Android-可设置宽高比的ImageView

    接下来,我们需要重写`onMeasure()`方法,这是Android控件计算其大小的关键函数。在`onMeasure()`中,我们将根据宽高比来确定ImageView的宽度和高度。 ```java @Override protected void onMeasure(int ...

    Android 可缩放ImageView

    4. **双击放大/缩小**:为了提高用户体验,可缩放ImageView通常还包含双击手势的处理,一次双击可以将图像放大到适合屏幕的大小,再次双击则恢复原始比例。 5. **平滑滚动和缩放**:为了提供更流畅的体验,组件可能...

    Android开发之ImageView通过matrix实现两点缩放和图片拖动

    2. 在onTouchEvent()方法中,根据ACTION_DOWN、ACTION_MOVE和ACTION_UP事件,计算出手指移动的距离,并通过Matrix的postTranslate()方法更新ImageView的位置。 对于两点缩放,我们需要使用ScaleGestureDetector来...

    android imageview 多点触碰(Multitouch)实现图片拖拽移动缩放

    在Android开发中,Imageview是用于显示图像的基本组件。然而,为了提供更加丰富的用户体验,我们经常需要实现一些高级功能,比如多点触碰(Multitouch)支持,使得用户能够通过手势来拖拽图片、移动图片位置以及缩放...

    Android-RatioImageView-根据比例自动计算宽高的ImageView

    `Android-RatioImageView-根据比例自动计算宽高的ImageView`项目就是为了解决这个问题而创建的。 `RatioImageView`是一个自定义的Android视图组件,它扩展了原生的`ImageView`,并添加了自动计算宽高比的功能。...

    Android ImageView图片循环跑马灯效果源码-IT计算机-毕业设计.zip

    在Android开发中,ImageView是用于显示单张图片或者进行图片操作的一个重要组件。然而,有时候开发者需要实现更复杂的视觉效果,比如图片循环跑马灯效果。这个"Android ImageView图片循环跑马灯效果源码"就是一个...

    android 圆形 imageview

    在Android开发中,"圆形ImageView"是一种常见的UI设计元素,用于显示用户头像、应用图标等需要呈现为圆形的图像。这种特殊的ImageView组件能够将矩形图像转换为圆形,为应用提供更加美观和统一的视觉效果。下面我们...

    android 圆角ImageView源码.rar

    在Android开发中,圆角ImageView是一种常见的需求,它允许我们展示带有圆角或者完全圆形的图片,提升应用的视觉效果。本压缩包“android 圆角ImageView源码.rar”包含了实现这一功能的源代码,主要文件有“readme.md...

    Android手势ImageView三部曲 第三部

    这个类主要用于检测双指缩放手势,其工作原理是基于Android的MotionEvent事件流,监听手指在屏幕上的移动变化,计算出缩放比例。 创建ScaleGestureDetector对象时,我们需要传入一个实现了`ScaleGestureDetector....

    android 长按ImageView 产生预览 并随手指移动

    在Android开发中,实现“长按ImageView产生预览并随手指移动”的功能,通常涉及到手势检测、图片处理和自定义视图等技术。这个功能可以让用户在长按图像后,出现一个半透明的预览图,并能通过手指的拖动操作来移动这...

    在固定大小imageView里显示图片指定区域

    通过这种方式,我们不仅实现了在固定大小的ImageView中显示图片的指定区域,还提供了灵活的配置方式,可以根据应用的需求进行定制。这在处理大量图片或者有特殊显示需求的场景下非常有用,比如展示局部细节、裁剪...

    android自定义控件继承imageview,实现拖拽,缩放,旋转

    首先,我们需要创建一个新的Java类,继承自Android的ImageView类。在这个类中,我们将添加额外的方法和属性来处理拖拽、缩放和旋转的操作。关键的步骤包括以下几个部分: 1. **初始化触摸事件**:在自定义控件中,...

    ImageView 宽度设定,高度按比例缩放

    在上面的代码中,`layout_width`设定了ImageView的宽度为200dp,`layout_height`设为`wrap_content`,这意味着高度将根据图片的实际大小来计算,保持与宽度的原始比例。`scaleType`被设置为`fitCenter`,确保图片按...

Global site tag (gtag.js) - Google Analytics