现在的位置: 首页 > 综合 > 正文

android 图片放大缩小

2017年12月25日 ⁄ 综合 ⁄ 共 3852字 ⁄ 字号 评论关闭

package com.wansha;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.util.DisplayMetrics;
import android.util.Log;
import android.view.KeyEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.RelativeLayout;

public class Activity31 extends Activity {
	private RelativeLayout layout;
    private Button big;
    private Button small;
    private ImageView bg;
    private Bitmap map;
    private float scaleH = 1;
    private float scaleW = 1;
    private int id;
    private DisplayMetrics metrics;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        this.layout = (RelativeLayout)this.findViewById(R.id.la);
        this.big = (Button)this.findViewById(R.id.big);
        this.small = (Button)this.findViewById(R.id.small);
//        this.image2 = (ImageView)this.findViewById(R.id.image1);
//        this.image2.setImageResource(R.drawable.left);
        this.bg = (ImageView)this.findViewById(R.id.bg);
//        this.bg.setImageResource(R.drawable.tttt);
        
        this.map = BitmapFactory.decodeResource(getResources(), R.drawable.tttt);
        Log.d("mydebug", "imageheigh---->" + map.getWidth() + "imagewidth------->" + map.getHeight());
        
        metrics = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(metrics);
        
//        Bitmap bm = Bitmap.createBitmap(map, 0, 0, 100, 100);
//        this.bg.setImageBitmap(bm);
        Log.d("mydebug", "screen_width--------->" + metrics.widthPixels + "screen_height----------->" + metrics.heightPixels);

        this.big.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				float scale = 1.25f;
		        Matrix matrix = new Matrix();
		        scaleW = scaleW * scale;
		        scaleH = scaleH * scale;
		        if(scaleH*map.getHeight() >= metrics.heightPixels || scaleW*map.getWidth() >= metrics.widthPixels){
					big.setEnabled(false);
					return;
				}
				if(id == 0){
					layout.removeView(bg);
				}else{
					layout.removeView((ImageView)findViewById(id));
				}
		        matrix.postScale(scaleW, scaleH);
		        Bitmap bitmap = Bitmap.createBitmap(map, 0, 0, map.getWidth(), map.getHeight(), matrix, true);
		        bg.setImageBitmap(bitmap);
		        ImageView image = new ImageView(Activity31.this);
		        image.setId(++id);
		        image.setImageBitmap(bitmap);
		        layout.addView(image);
		        setContentView(layout);
		        System.out.println("bit---------->" + scaleH*scale*map.getHeight() + "    :      " + scaleW*scale*map.getWidth());
				if(scaleH*scale*map.getHeight() >= metrics.heightPixels || scaleW*scale*map.getWidth() >= metrics.widthPixels){
					big.setEnabled(false);
				}else{
					big.setEnabled(true);
				}
				small.setEnabled(true);
			}
		});
        this.small.setOnClickListener(new OnClickListener() {
			
			@Override
			public void onClick(View v) {
				if(id == 0){
					layout.removeView(bg);
				}else{
					layout.removeView((ImageView)findViewById(id));
				}
				float scale = 0.8f;
		        Matrix matrix = new Matrix();
		        scaleW = scaleW * scale;
		        scaleH = scaleH * scale;
		        matrix.postScale(scaleW, scaleH);
		        Bitmap bitmap = Bitmap.createBitmap(map, 0, 0, map.getWidth(), map.getHeight(), matrix, true);
		        bg.setImageBitmap(bitmap);
		        ImageView image = new ImageView(Activity31.this);
		        image.setId(++id);
		        image.setImageBitmap(bitmap);
		        layout.addView(image);
		        setContentView(layout);
				if(scaleH*scale <=  0.4){
					small.setEnabled(false);
				}else{
					big.setEnabled(true);
				}
				big.setEnabled(true);
			}

		});
    }
    @Override
    protected void onSaveInstanceState(Bundle outState) {
    	// TODO Auto-generated method stub
    	super.onSaveInstanceState(outState);
    }
    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
    	System.out.println("keycode--------->" + keyCode);
    	if(keyCode == KeyEvent.KEYCODE_BACK){
    		new AlertDialog.Builder(this).setTitle("退出").setMessage("确定要退出吗?").setPositiveButton("确定", new DialogInterface.OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					finish();
					android.os.Process.killProcess(android.os.Process.myPid());
				}
			}).setNegativeButton("取消", new DialogInterface.OnClickListener() {
				
				@Override
				public void onClick(DialogInterface dialog, int which) {
					
				}
			}).show();
    		
    	}
    	return super.onKeyDown(keyCode, event);
    }
}

抱歉!评论已关闭.