首页>代码>android 动态放大缩小ImageView里的图片>/Matrix/src/ycitss/matrix/activity/MainActivity.java
package ycitss.matrix.activity;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

public class MainActivity extends Activity {
	private Button myButton1;
	private Button myButton2;
	private TextView myTextView;
	private ImageView myImageView;

	private LinearLayout layout1;
	private Bitmap bmp;
	private int id = 0;
	private int displayWidth;
	private int displayHeight;
	private float scaleWidth = 1;
	private float scaleHeight = 1;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		myButton1 = (Button) findViewById(R.id.myButton1);
		myButton2 = (Button) findViewById(R.id.myButton2);
		myTextView = (TextView) findViewById(R.id.myTextView);
		myImageView = (ImageView) findViewById(R.id.myImageView);
		layout1 = (LinearLayout) findViewById(R.id.layout1);
		// 取得屏幕分辨率大小
		DisplayMetrics dm = new DisplayMetrics();
		getWindowManager().getDefaultDisplay().getMetrics(dm);

		displayHeight = dm.heightPixels - myButton1.getHeight()
				- myButton2.getHeight() - myTextView.getHeight();
		displayWidth = dm.widthPixels;

		bmp = BitmapFactory.decodeResource(getResources(), R.drawable.bg3);
		myTextView.setText(bmp.getWidth() + " * " + bmp.getHeight());
		// 放大按钮
		myButton1.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				big();
			}
		});
		// 缩小按钮
		myButton2.setOnClickListener(new View.OnClickListener() {

			@Override
			public void onClick(View v) {
				small();
			}
		});
	}

	private void small() {
		int bmpWidth = bmp.getWidth();
		int bmpHeight = bmp.getHeight();

		// 设置图片缩小比例
		double scale = 0.8;

		// 计算出这次要缩小的比例
		scaleWidth = (float) (scaleWidth * scale);
		scaleHeight = (float) (scaleHeight * scale);

		// 产生reSize后的Bitmap对象
		Matrix matrix = new Matrix();
		matrix.postScale(scaleWidth, scaleHeight);
		Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight,
				matrix, true);

		if (id == 0) {
			// 如果是第一次按,就删除原来默认的ImageView
			layout1.removeView(myImageView);
		} else {
			// 如果不是第一次按,就删除上一次放大或缩小所产生的ImageView
			layout1.removeView((ImageView) findViewById(id));
		}
		id++;
		ImageView imageView = new ImageView(this);
		imageView.setId(id);
		imageView.setImageBitmap(resizeBmp);
		layout1.addView(imageView);
		setContentView(layout1);
		
		myTextView.setText(resizeBmp.getWidth()+ " * " +resizeBmp.getHeight());
		
		if (scaleWidth * scale * bmpWidth < 2
				|| scaleHeight * scale * bmpHeight < 2) {
			myButton2.setEnabled(false);
		}
		// 图片片放到最大后,放大按钮会disable,所以再缩小的时候把它重设为enable
		myButton1.setEnabled(true);
	}

	private void big() {
		int bmpWidth = bmp.getWidth();
		int bmpHeight = bmp.getHeight();

		// 设置图片放大比例
		double scale = 1.25;

		// 计算出这次要放大的比例
		scaleWidth = (float) (scaleWidth * scale);
		scaleHeight = (float) (scaleHeight * scale);

		// 产生reSize后的Bitmap对象
		Matrix matrix = new Matrix();
		matrix.postScale(scaleWidth, scaleHeight);
		Bitmap resizeBmp = Bitmap.createBitmap(bmp, 0, 0, bmpWidth, bmpHeight,
				matrix, true);
		if (id == 0) {
			// 如果是第一次按,就删除原来默认的ImageView
			layout1.removeView(myImageView);
		} else {
			// 如果不是第一次按,就删除上一次放大或缩小所产生的ImageView
			layout1.removeView((ImageView) findViewById(id));
		}
		id++;
		ImageView imageView = new ImageView(this);
		imageView.setId(id);
		imageView.setImageBitmap(resizeBmp);
		layout1.addView(imageView);
		setContentView(layout1);
		
		myTextView.setText(resizeBmp.getWidth()+ " * " +resizeBmp.getHeight());
		
		if (scaleWidth * scale * bmpWidth > displayWidth
				|| scaleHeight * scale * bmpHeight > displayHeight) {
			myButton1.setEnabled(false);
		}
		myButton2.setEnabled(true);
	}
}
最近下载更多
aaa5849310  LV25 2021年3月11日
啧啧zz  LV2 2019年12月17日
女方面  LV18 2019年11月5日
wangshihua  LV19 2019年5月10日
woshixunlinxuan  LV1 2019年1月4日
ginlools  LV2 2018年12月4日
rf502156762  LV8 2018年1月10日
xixixib  LV8 2018年1月9日
2506894463  LV7 2017年11月8日
wujj_wtj  LV3 2017年8月30日
最近浏览更多
倾城之恋1  LV5 2023年5月21日
cxywt12  LV2 2022年5月20日
2021年5月22日
暂无贡献等级
这不是一只柚子吗  LV6 2021年4月6日
aaa5849310  LV25 2021年3月11日
wyx065747  LV67 2021年1月3日
by_name  LV4 2020年12月3日
lgllllll  LV11 2020年6月15日
虞姬奥利奥  LV3 2020年6月7日
756398953  LV12 2020年5月18日
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友