我是靠谱客的博主 陶醉睫毛,最近开发中收集的这篇文章主要介绍Android自助餐之大图片加载Android自助餐之大图片加载,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

Android自助餐之大图片加载

原理

  1. 使用BitmapFactory.decodeStreeam()方法,该方法会调用native层代码来创建bitmap(两个重载都会调用)
  2. 使用带BitmapFactory.Options参数的方法,改参数可指定生成bitmap的大小

思路

  1. 根据View尺寸或Window尺寸来确定bitmap的尺寸
  2. 将确定好的尺寸放入BitmapFactory.Options
  3. 调用BitmapFactory.decodeStreeam()生成bitmap

步骤

  1. 根据图片路径或URI打开输入流

    InputStream is = getContentResolver().openInputStream(imageUri);
  2. 获取屏幕或View尺寸
    如果能确定View尺寸则使用View尺寸,如果不能(比如动态调整的View、自适应的View等)则获取最接近该View的尺寸,实在不行就获取当前Activity的Window尺寸(比屏幕尺寸小)

    • 获取Window尺寸

      WindowManager windowManager = getWindowManager();
      Display defaultDisplay = windowManager.getDefaultDisplay();
      defaultDisplay.getHeight();
      defaultDisplay.getWidth();
    • 获取View尺寸

      view.getMeasuredWidth();
      view.getMeasuredHeight();
  3. 根据目标尺寸生成BitmapFactory.Options

    BitmapFactory.Options option = new BitmapFactory.Options();
    option.inSampleSize = dstSize;
  4. 使用options调用BitmapFactory.decodeStream()生成bitmap

    Bitmap bitmap = BitmapFactory.decodeStream(is, null, option);

完整代码

InputStream is = null;
try {
int screenWidth=getWindowManager().getDefaultDisplay().getWidth();
int screenHeight=getWindowManager().getDefaultDisplay().getHeight();
int maxSize=Math.max(screenWidth,screenHeight);//以长边为准
is = getContentResolver().openInputStream(imageUri);
BitmapFactory.Options option = new BitmapFactory.Options();
option.inSampleSize = maxSize;
Bitmap bitmap = BitmapFactory.decodeStream(is, null, option);
imageView.setImageBitmap(bitmap);
} catch (Exception e) {
e.printStackTrace();
}
try{
if(is!=null)is.close();
}

最后

以上就是陶醉睫毛为你收集整理的Android自助餐之大图片加载Android自助餐之大图片加载的全部内容,希望文章能够帮你解决Android自助餐之大图片加载Android自助餐之大图片加载所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(34)

评论列表共有 0 条评论

立即
投稿
返回
顶部