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

android开发

开发平台:

Java

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