当Bitmap的宽度大于ImageView的最大显示宽度时对ImageView的宽高重新计算来适应Bitmap的宽高(转)

当bitmap的宽大于ImageView显示控件的宽度时,如果不对ImageView的宽高重新计算,那么Imageview的高度就会超过显示图片的高度,用户体验将会很差,所以我们需要重新计算显示控件的宽高,这里我们假定ImageView的最大宽度为屏幕的宽度。利用下面这个工具类就可以很好解决问题了:

Android获取屏幕宽度和高度:
// WindowManager manage=getWindowManager();
// Display display=manage.getDefaultDisplay();
// screenHeight=display.getHeight();
// screenWidth=display.getWidth();

InputStream is = getResources().openRawResource(R.drawable.sy);

Bitmap mBitmap = BitmapFactory.decodeStream(is);
LinearLayout.LayoutParams lp=getLayoutParams(mBitmap,screenWidth);
imageView1.setLayoutParams(lp);
imageView1.setImageBitmap(mBitmap);

public static LinearLayout.LayoutParams getLayoutParams(Bitmap bitmap,int screenWidth){
float rawWidth = bitmap.getWidth();
float rawHeight = bitmap.getHeight();
float width = 0;
float height = 0;
Log.i("hello", "原始图片高度:"+rawHeight+"原始图片宽度:"+rawWidth);
Log.i("hello", "原始高宽比:"+(rawHeight/rawWidth));
if(rawWidth > screenWidth){
height = (rawHeight/rawWidth)*screenWidth;
width = screenWidth;
}else{
width = rawWidth;
height = rawHeight;
}
Log.i("hello", "处理后图片高度:"+height+"处理后图片宽度:"+width);
LinearLayout.LayoutParams layoutParams = new LinearLayout.LayoutParams((int)width, (int)height);
return layoutParams;
}

时间: 2024-08-19 12:59:53

当Bitmap的宽度大于ImageView的最大显示宽度时对ImageView的宽高重新计算来适应Bitmap的宽高(转)的相关文章

MySQL的字段长度和显示宽度

MySQL类型关键字后面的括号内指定整数值的显示宽度(例如,INT(11)).该可选显示宽度规定用于显示宽度小于指定的列宽度的值时从左侧填满宽度.显示宽度并不限制可以在列内保存的值的范围,也不限制超过列的指定宽度的值的显示. 所以INT(1)和INT(11)默认是没有任何区别的!!! 当结合可选扩展属性ZEROFILL使用时, 默认补充的空格用零代替.例如,对于声明为INT(5) ZEROFILL的列,值4检索为00004. 请注意如果在整数列保存超过显示宽度的一个值,当MySQL为复杂联接生成

C# 压缩图片到指定宽度,假如图片小于指定宽度 判断图片大小是否大于指定大小(KB) 如果大于则压缩图片质量 宽高不变

class Program { static void Main(string[] args) {//G:\zhyue\backup\projects\Test\ConsoleApplication1\img //var url = "http://seo.jrechina.com/houselist/"; //var res = WebRequestExt.GetData(url); string img_url = @"D:\Documents\Pictures\壁纸\1

ImageView最大高度和宽度失效解决方案

解决方案 做RecyclerView的 item 布局时,用到imageview ,可是图片按原始尺寸显示,不规范. 所以去google了一下imageview的宽高限制,就试了下maxheight/maxwidth 本想使用android:maxheight 和 android:maxwidth 限制imageview的高度和宽度,可是run后,发现没用,图片还是按原始的尺寸显示, 又看了几篇博客,还是没用,去stackoverflow搜然后google翻译了一下??,终于解决了,看贴图 除了

css 图片内容在不同分辨率下居中显示(演示的图片宽度是1920px,当图片宽度大于显示屏的宽度时)

1.img 图片内容在不同分辨率下居中显示(如果隐藏多余,在img外面套一个div  设定overflow: hidden.div的大小就是img显示区域的大小) <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>无标题文档</title&

【转】 ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)

1 这里我们重点理解ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType).android:scaleType是控制图片如何resized/moved来匹对ImageView的size.ImageView.ScaleType / android:scaleType值的意义区别: 2 3 CENTER /center 按图片的原来size居中显示,当图片长/宽超过View的长/宽,则截取图片的居中部分显示

ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType)

1 imageView.setScaleType(ImageView.ScaleType.FIT_XY ); 1 这里我们重点理解ImageView的属性android:scaleType,即ImageView.setScaleType(ImageView.ScaleType).android:scaleType是控制图片如何resized/moved来匹对ImageView的size.ImageView.ScaleType / android:scaleType值的意义区别: 2 3 CENT

android 中遇到 imageView getWidth 始终为0 时 ,设置 setImageBitmap 的方法

先说说我的遇到的问题: 1. 我在activity里写一个 fragment 2.这个fragment里有个 imageView ,用于显示图片. 我使用 asyncTask获得图片,并准备在这个imageView 中显示该图片的缩略图,我准备使用  ThumbnailUtils.extractThumbnail 方法生成缩略图. 我们先看看ThumbnailUtils.extractThumbnail(source, width, height);  这个方法的参数   source 源文件(

android 屏幕截图时,如何更改截图内容,将两个bitmap合并一起显示图像

项目中遇到的需求,需要截图,截图方法如下 此方法传入一个想要截图的activity /** * 截图 对相应的activity截图 * * @param activity * @return */ public Bitmap takeScreenShot(Activity activity) { View rootView = activity.getWindow().getDecorView(); rootView.setDrawingCacheEnabled(true); rootView.

怪胎:Android开发ImageView图片无法显示

今天碰到一个非常奇怪的问题: 在Android中ImageView无法显示加载的本地SDCard图片. 具体过程是:先调用本地照相机程序摄像,然后将拍摄的图片加载在ImageView中显示. [java] view plaincopyprint? public class ActiEnvi extends Activity   { static final String TAG = "ActiEnvi"; private static final int REQ_CODE_CAMERA