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

android开发

开发平台:

Java

  1. package irdc.ex04_24;
  2. import android.app.Activity;
  3. import android.graphics.Bitmap;
  4. import android.graphics.BitmapFactory;
  5. import android.graphics.Matrix;
  6. import android.graphics.drawable.BitmapDrawable;
  7. import android.os.Bundle;
  8. import android.view.View;
  9. import android.widget.Button;
  10. import android.widget.ImageView;
  11. import android.widget.TextView;
  12. public class EX04_24 extends Activity
  13. {
  14.   private Button mButton1;
  15.   private Button mButton2;
  16.   private TextView mTextView1;
  17.   private ImageView mImageView1;
  18.   private int ScaleTimes;
  19.   private int ScaleAngle;
  20.   
  21.   /** Called when the activity is first created. */
  22.   @Override
  23.   public void onCreate(Bundle savedInstanceState)
  24.   {
  25.     super.onCreate(savedInstanceState);
  26.     setContentView(R.layout.main);
  27.     
  28.     mButton1 =(Button) findViewById(R.id.myButton1);
  29.     mButton2 =(Button) findViewById(R.id.myButton2);
  30.     mTextView1 = (TextView) findViewById(R.id.myTextView1);
  31.     mImageView1 = (ImageView) findViewById(R.id.myImageView1);
  32.     ScaleTimes = 1;
  33.     ScaleAngle = 1;
  34.     
  35.     final Bitmap mySourceBmp = 
  36.     BitmapFactory.decodeResource(getResources(), R.drawable.hippo);
  37.     
  38.     final int widthOrig = mySourceBmp.getWidth(); 
  39.     final int heightOrig = mySourceBmp.getHeight();
  40.     
  41.     /* 程序刚运行,加载默认的Drawable */
  42.     mImageView1.setImageBitmap(mySourceBmp);
  43.     
  44.     /* 向左旋转按钮 */
  45.     mButton1.setOnClickListener(new Button.OnClickListener()
  46.     {
  47.       @Override
  48.       public void onClick(View v)
  49.       {
  50.         // TODO Auto-generated method stub
  51.         ScaleAngle--;
  52.         if(ScaleAngle<-5)
  53.         {
  54.           ScaleAngle = -5;
  55.         }
  56.         
  57.         /* ScaleTimes=1,维持1:1的宽高比例*/
  58.         int newWidth = widthOrig * ScaleTimes;
  59.         int newHeight = heightOrig * ScaleTimes;
  60.         
  61.         float scaleWidth = ((float) newWidth) / widthOrig; 
  62.         float scaleHeight = ((float) newHeight) / heightOrig; 
  63.         
  64.         Matrix matrix = new Matrix(); 
  65.         /* 使用Matrix.postScale设置维度 */
  66.         matrix.postScale(scaleWidth, scaleHeight);
  67.         
  68.         /* 使用Matrix.postRotate方法旋转Bitmap*/
  69.         //matrix.postRotate(5*ScaleAngle);
  70.         matrix.setRotate(5*ScaleAngle);
  71.         
  72.         /* 创建新的Bitmap对象 */ 
  73.         Bitmap resizedBitmap =
  74.         Bitmap.createBitmap
  75.         (mySourceBmp, 0, 0, widthOrig, heightOrig, matrix, true);
  76.         
  77.         /**/
  78.         BitmapDrawable myNewBitmapDrawable =
  79.         new BitmapDrawable(resizedBitmap);
  80.         
  81.         mImageView1.setImageDrawable(myNewBitmapDrawable);
  82.         mTextView1.setText(Integer.toString(5*ScaleAngle));
  83.       }
  84.     });
  85.     
  86.     /* 向右旋转按钮 */
  87.     mButton2.setOnClickListener(new Button.OnClickListener()
  88.     {
  89.       @Override
  90.       public void onClick(View v)
  91.       {
  92.         // TODO Auto-generated method stub
  93.         ScaleAngle++;
  94.         if(ScaleAngle>5)
  95.         {
  96.           ScaleAngle = 5;
  97.         }
  98.         
  99.         /* ScaleTimes=1,维持1:1的宽高比例*/
  100.         int newWidth = widthOrig * ScaleTimes;
  101.         int newHeight = heightOrig * ScaleTimes;
  102.         
  103.         /* 计算旋转的Matrix比例 */ 
  104.         float scaleWidth = ((float) newWidth) / widthOrig; 
  105.         float scaleHeight = ((float) newHeight) / heightOrig; 
  106.         
  107.         Matrix matrix = new Matrix(); 
  108.         /* 使用Matrix.postScale设置维度 */ 
  109.         matrix.postScale(scaleWidth, scaleHeight);
  110.         
  111.         /* 使用Matrix.postRotate方法旋转Bitmap*/
  112.         //matrix.postRotate(5*ScaleAngle);
  113.         matrix.setRotate(5*ScaleAngle);
  114.         
  115.         /* 创建新的Bitmap对象 */ 
  116.         Bitmap resizedBitmap =
  117.         Bitmap.createBitmap
  118.         (mySourceBmp, 0, 0, widthOrig, heightOrig, matrix, true);
  119.         
  120.         /**/
  121.         BitmapDrawable myNewBitmapDrawable =
  122.         new BitmapDrawable(resizedBitmap);
  123.         
  124.         mImageView1.setImageDrawable(myNewBitmapDrawable);
  125.         mTextView1.setText(Integer.toString(5*ScaleAngle));
  126.       }
  127.     });
  128.   }
  129. }