`
407827531
  • 浏览: 1061100 次
  • 性别: Icon_minigender_1
  • 来自: 厦门
社区版块
存档分类
最新评论

使用Matrix放大或缩小图片

XML 
阅读更多

推荐安卓开发神器(里面有各种UI特效和android代码库实例)

public class ex04_22 extends Activity{
   
 private ImageView mImageView;
 private Button btn1,btn2;
 private TextView mTextView;
 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);
        btn1.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
          small();
         }
        });
        btn2=(Button)findViewById(R.id.myButton2);
        btn2.setOnClickListener(new OnClickListener(){
         public void onClick(View v){
          big();
         }
        });
    }
    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);
     }
    }
}


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="200px"
      android:layout_height="150px"
      android:src="@drawable/ex04_22_1"
      android:layout_x="0px"
      android:layout_y="0px"
    >
    </ImageView>
    <Button
      android:id="@+id/myButton1"
      android:layout_width="90px"
      android:layout_height="60px"
      android:text="缩小"
      android:textSize="18sp"
      android:layout_x="20px"
      android:layout_y="372px"
    >
    </Button>
    <Button
      android:id="@+id/myButton2"
      android:layout_width="90px"
      android:layout_height="60px"
      android:text="放大"
      android:textSize="18sp"
      android:layout_x="210px"
      android:layout_y="372px"
    >
    </Button>
  </AbsoluteLayout>

 

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics