ex04_23.java
上传用户:vip_99
上传日期:2021-03-27
资源大小:61159k
文件大小:4k
源码类别:

android开发

开发平台:

Java

  1. package irdc.photo;
  2. /* import相关class */
  3. import android.R;
  4. import android.app.Activity;
  5. import android.graphics.Bitmap;
  6. import android.graphics.BitmapFactory;
  7. import android.graphics.Matrix;
  8. import android.os.Bundle;
  9. import android.util.DisplayMetrics;
  10. import android.view.View;
  11. import android.widget.AbsoluteLayout;
  12. import android.widget.Button;
  13. import android.widget.ImageView;
  14. public class ex04_23 extends Activity
  15. {
  16.   /* 相关变量声明 */
  17.   private ImageView mImageView;
  18.   private Button mButton01;
  19.   private Button mButton02;
  20.   private AbsoluteLayout layout1;
  21.   private Bitmap bmp;
  22.   private int id=0;
  23.   private int displayWidth;
  24.   private int displayHeight;
  25.   private float scaleWidth=1;
  26.   private float scaleHeight=1;
  27.   
  28.   /** Called when the activity is first created. */
  29.   @Override
  30.   public void onCreate(Bundle savedInstanceState)
  31.   {
  32.     super.onCreate(savedInstanceState);
  33.     /* 载入main.xml Layout */
  34.     setContentView(R.layout.main);
  35.     
  36.     /* 取得屏幕分辨率大小 */
  37.     DisplayMetrics dm=new DisplayMetrics();
  38.     getWindowManager().getDefaultDisplay().getMetrics(dm);
  39.     displayWidth=dm.widthPixels;
  40.     /* 屏幕高度须扣除下方Button高度 */
  41.     displayHeight=dm.heightPixels-80;
  42.     /* 初始化相关变量 */
  43.     bmp=BitmapFactory.decodeResource(getResources(),
  44.                                      R.drawable.ex04_23);
  45.     mImageView = (ImageView)findViewById(R.id.myImageView);
  46.     layout1 = (AbsoluteLayout)findViewById(R.id.layout1); 
  47.     mButton01 = (Button)findViewById(R.id.myButton1);
  48.     mButton02 = (Button)findViewById(R.id.myButton2);
  49.     
  50.     /* 缩小按钮onClickListener */
  51.     mButton01.setOnClickListener(new Button.OnClickListener()
  52.     {
  53.       @Override
  54.       public void onClick(View v)
  55.       {
  56.         small();
  57.       }
  58.     });
  59.     
  60.     /* 放大按钮onClickListener */
  61.     mButton02.setOnClickListener(new Button.OnClickListener()
  62.     {
  63.       @Override
  64.       public void onClick(View v)
  65.       {
  66.         big();
  67.       }
  68.     });
  69.     
  70.   }
  71.   
  72.   /* 图片缩小的method */
  73.   private void small()
  74.   {
  75.     int bmpWidth=bmp.getWidth();
  76.     int bmpHeight=bmp.getHeight();
  77.     /* 设置图片缩小的比例 */
  78.     double scale=0.8;  
  79.     /* 计算出这次要缩小的比例 */
  80.     scaleWidth=(float) (scaleWidth*scale);
  81.     scaleHeight=(float) (scaleHeight*scale);
  82.     
  83.     /* 产生reSize后的Bitmap对象 */
  84.     Matrix matrix = new Matrix();  
  85.     matrix.postScale(scaleWidth, scaleHeight); 
  86.     Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,bmpWidth,
  87.                                            bmpHeight,matrix,true);
  88.      
  89.     if(id==0)
  90.     {
  91.       /* 如果是第一次按,就删除原来默认的ImageView */
  92.       layout1.removeView(mImageView);
  93.     }
  94.     else
  95.     {
  96.       /* 如果不是第一次按,就删除上次放大缩小所产生的ImageView */
  97.       layout1.removeView((ImageView)findViewById(id));
  98.     }
  99.     /* 产生新的ImageView,放入reSize的Bitmap对象,再放入Layout中 */
  100.     id++;
  101.     ImageView imageView = new ImageView(ex04_23.this);  
  102.     imageView.setId(id);
  103.     imageView.setImageBitmap(resizeBmp);
  104.     layout1.addView(imageView); 
  105.     setContentView(layout1);
  106.     
  107.     /* 因为图片放到最大时放大按钮会disable,所以在缩小时把他重设为enable */
  108.     mButton02.setEnabled(true);
  109.   }
  110.   
  111.   /* 图片放大的method */
  112.   private void big()
  113.   {   
  114.     int bmpWidth=bmp.getWidth();
  115.     int bmpHeight=bmp.getHeight();
  116.     /* 设置图片放大的比例 */
  117.     double scale=1.25;  
  118.     /* 计算这次要放大的比例 */
  119.     scaleWidth=(float)(scaleWidth*scale);
  120.     scaleHeight=(float)(scaleHeight*scale);
  121.     
  122.     /* 产生reSize后的Bitmap对象 */
  123.     Matrix matrix = new Matrix();  
  124.     matrix.postScale(scaleWidth, scaleHeight); 
  125.     Bitmap resizeBmp = Bitmap.createBitmap(bmp,0,0,bmpWidth,
  126.                                            bmpHeight,matrix,true);
  127.       
  128.     if(id==0)
  129.     {
  130.       /* 如果是第一次按,就删除原来设置的ImageView */
  131.       layout1.removeView(mImageView);
  132.     }
  133.     else
  134.     {
  135.       /* 如果不是第一次按,就删除上次放大缩小所产生的ImageView */
  136.       layout1.removeView((ImageView)findViewById(id));
  137.     }
  138.     /* 产生新的ImageView,放入reSize的Bitmap对象,再放入Layout中 */
  139.     id++; 
  140.     ImageView imageView = new ImageView(ex04_23.this);  
  141.     imageView.setId(id);
  142.     imageView.setImageBitmap(resizeBmp);
  143.     layout1.addView(imageView); 
  144.     setContentView(layout1); 
  145.     
  146.     /* 如果再放大会超过屏幕大小,就把Button disable */ 
  147.     if(scaleWidth*scale*bmpWidth>displayWidth||
  148.         scaleHeight*scale*bmpHeight>displayHeight)
  149.     {
  150.       mButton02.setEnabled(false);
  151.     }
  152.   }
  153. }