使用Matrix放大或缩小图片

来源:互联网 发布:mac php集成环境 编辑:程序博客网 时间:2024/05/18 04:15

1.将图片ex04_22_1.png放在目录res/drawable-hdpi下

2.布局文件main.xml

<?xml version="1.0" encoding="utf-8"?><AbsoluteLayout    android:id="@+id/layout1"    android:layout_width="fill_parent"    android:layout_height="fill_parent"    xmlns:android="http://schemas.android.com/apk/res/android">    <ImageView      android:id="@+id/myImageView"      android:layout_width="200dp"      android:layout_height="150dp"      android:src="@drawable/ex04_22_1"      android:contentDescription="@string/des"     >    </ImageView>    <Button      android:id="@+id/myButton1"      android:layout_width="90dp"      android:layout_height="60dp"      android:text="@string/small"      android:textSize="18sp"      android:layout_x="200dp"       android:layout_y="372dp"    >    </Button>    <Button      android:id="@+id/myButton2"      android:layout_width="90dp"      android:layout_height="60dp"      android:text="@string/big"      android:textSize="18sp"      android:layout_x="90dp"      android:layout_y="372dp"    >    </Button>  </AbsoluteLayout>

3.创建一个ex04_22.java的文件

package wei.cao.test;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.view.View.OnClickListener;import android.widget.AbsoluteLayout;import android.widget.Button;import android.widget.ImageView;public class ex04_22 extends Activity{    private ImageView mImageView; private Button btn1,btn2; private AbsoluteLayout layout1; private Bitmap bmp; private int id=0; private int displayWidth,displayHeight; private float scaleWidth=1,scaleHeight=1;// private final static String filename="/data/data/ex04_22.lcs/ex04_22_2.png";    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);        //取得屏幕分辨率        DisplayMetrics dm=new DisplayMetrics();        getWindowManager().getDefaultDisplay().getMetrics(dm);        displayWidth=dm.widthPixels;        displayHeight=dm.heightPixels-80;               bmp=BitmapFactory.decodeResource(this.getResources(),R.drawable.ex04_22_1);                layout1=(AbsoluteLayout)findViewById(R.id.layout1);        mImageView=(ImageView)findViewById(R.id.myImageView);        btn1=(Button)findViewById(R.id.myButton1);        btn2=(Button)findViewById(R.id.myButton2);                btn1.setOnClickListener(new OnClickListener(){         public void onClick(View v){          small();         }        });          btn2.setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View arg0) {// TODO Auto-generated method stubbig();}        });    }    private void small(){     //获得Bitmap的高和宽     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){      layout1.removeView(mImageView);     }     else{      layout1.removeView((ImageView)findViewById(id));     }     id++;     ImageView imageView=new ImageView(this);     imageView.setId(id);     imageView.setImageBitmap(resizeBmp);     layout1.addView(imageView);     setContentView(layout1);     btn2.setEnabled(true);    }    private void big(){     //获得Bitmap的高和宽     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){      layout1.removeView(mImageView);     }     else{      layout1.removeView((ImageView)findViewById(id));     }     id++;     ImageView imageView=new ImageView(this);     imageView.setId(id);     imageView.setImageBitmap(resizeBmp);     layout1.addView(imageView);     setContentView(layout1);     if(scaleWidth*scale*bmpWidth>displayWidth||scaleHeight*scale*scaleHeight>displayHeight){      btn2.setEnabled(false);     }    }}

4.运行结果

原创粉丝点击