Android(安卓)显示大图片
16lz
2022-05-30
主要的代码如下:
BitmapFactory.Options options = new BitmapFactory.Options(); //图片解析配置 options.inJustDecodeBounds = true; //获取图片的属性并赋予options BitmapFactory.decodeResource(getResources(), R.drawable.f1, options); //获得图片实际宽高 int imgWidth = options.outWidth; int imgHeight = options.outHeight; System.out.println("outWidth = " + imgWidth); System.out.println("outHeight = " + imgHeight); //获取屏幕大小 WindowManager windowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE); int windowwidth = windowManager.getDefaultDisplay().getWidth(); int windowheight = windowManager.getDefaultDisplay().getHeight(); System.out.println("width = " + windowwidth); System.out.println("height = " + windowheight); //计算缩放 int scale = 1; int scaleX = imgWidth/windowwidth; int scaleY = imgHeight/windowheight; if(scaleX>1 && scaleX>scaleY) { scale = scaleX; } if(scaleY>1 && scaleY>scaleX) { scale = scaleY; } System.out.println("scale = " + scale); //真的解析图片 options.inJustDecodeBounds = false; options.inSampleSize = scale; Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.f1, options); imageView.setImageBitmap(bitmap);
附(计算inSampleSize的工具方法):
public static int calculateInSampleSize(BitmapFactory.Options options, int reqWidth, int reqHeight) { final int height = options.outHeight; final int width = options.outWidth; int inSampleSize = 1; if (height > reqHeight || width > reqWidth) { final int heightRatio = Math.round((float) height / (float) reqHeight); final int widthRatio = Math.round((float) width / (float) reqWidth); inSampleSize = heightRatio < widthRatio ? widthRatio : heightRatio; } return inSampleSize; }
更多相关文章
- android 判断 网络 类型
- android 单击 切换图片 --- 注意图片大小
- [置顶] Android(安卓)通过经纬度获取地理位置信息
- android设置一个图片为全屏大小
- Android(安卓)调用系统相机拍照的返回结果
- Android遍历某个文件夹的图片并实现滑动查看的的Gallery
- android sdcard文件存储 + 媒体库更新方法
- android之sax解析xml文件
- android中调用相册里面的图片并返回