package com.itheima74.loadbigimage;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.os.Bundle;import android.support.v7.app.AppCompatActivity;import android.view.View;import android.view.WindowManager;import android.widget.ImageView;import static android.graphics.BitmapFactory.decodeResource;/** * 加载一张大图 */public class MainActivity extends AppCompatActivity { PRivate ImageView iv; private int mScreenWidth; private int mScreenHeight; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); iv = (ImageView) findViewById(R.id.iv); // 获取手机屏幕的宽和高 WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE); mScreenWidth = wm.getDefaultDisplay().getWidth(); mScreenHeight = wm.getDefaultDisplay().getHeight(); System.out.println("mScreenWidth:" + mScreenWidth + ",mScreenHeight:" + mScreenHeight); } // 点击按钮,加载一张大图 public void click(View view) { // 创建工厂配置参数 BitmapFactory.Options options = new BitmapFactory.Options(); // 只获取图片基本信息(宽高),不去解析图片 options.inJustDecodeBounds = true; decodeResource(getResources(), R.drawable.dog, options); int imgWidth = options.outWidth; int imgHeight = options.outHeight; System.out.println("imgWidth:" + imgWidth + ",imgHeighe:" + imgHeight); // 计算缩放比 int scale = 1; int scaleX = imgWidth / mScreenWidth;// 水平方向缩放比 int scaleY = imgHeight / mScreenHeight;// 垂直方向缩放比 if (scaleX > scaleY && scaleX > scale) { scale = scaleX; } else if (scaleY > scaleX && scaleY > scale) { scale = scaleY; } System.out.println("scale:" + scale); // 按照缩放比显示图片 options.inSampleSize = scale; options.inJustDecodeBounds = false; Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.dog, options); // iv显示图片 iv.setImageBitmap(bitmap); }}
新闻热点
疑难解答