图片的加载

本文介绍了一种在Android应用中使图片自适应不同屏幕分辨率的方法。通过获取屏幕分辨率及图片原始尺寸,按比例缩放图片,确保在不同设备上都能正常显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


public class MainActivity extends Activity {

	private int screenWidth;
	private int screenHeight;
	private ImageView iv_image;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);

		iv_image = (ImageView) findViewById(R.id.iv_image);

		// 获取窗体管理器
		WindowManager wm = (WindowManager) getSystemService(WINDOW_SERVICE);
		Display display = wm.getDefaultDisplay();

		// 1. 获取手机的分辨率
		screenWidth = display.getWidth();
		screenHeight = display.getHeight();
		System.out.println("screenWidth: " + screenWidth + " screenHeight: "
				+ screenHeight);
	}

	public void loadImage(View v) {
		// 2. 获取图片的分辨率
		Options opts = new Options();
		// 标记为只加载图片信息模式
		opts.inJustDecodeBounds = true;
		// 解析文件
		// BitmapFactory.decodeFile("/mnt/sdcard/bg.jpg", opts);
		BitmapFactory.decodeFile("/mnt/sdcard/318068-106.jpg", opts);

		int bitmapWidth = opts.outWidth;
		int bitmapHeight = opts.outHeight;
		System.out.println("bitmapWidth: " + bitmapWidth + " bitmapHeight: "
				+ bitmapHeight);

		// 3. 根据比例进行缩放显示
		// 计算缩放比例
		int inSampleSize = 1;
		// 3000 x 3000, 320x480, 9x6
		int wSize = bitmapWidth / screenWidth;
		int hSize = bitmapHeight / screenHeight;

		// 求出两者最大值
		inSampleSize = Math.max(wSize, hSize);
		System.out.println("wSize: " + wSize + " hSize: " + hSize
				+ " inSampleSize: " + inSampleSize);

		// 设置缩放比例
		opts.inSampleSize = inSampleSize;

		// 标记为加载全部内容
		opts.inJustDecodeBounds = false;
//		Bitmap bm = BitmapFactory.decodeFile("/mnt/sdcard/bg.jpg", opts);
		Bitmap bm = BitmapFactory.decodeFile("/mnt/sdcard/318068-106.jpg", opts);   
		iv_image.setImageBitmap(bm);

	}

}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值