本文使用Matrix实现Android实现图片缩放与旋转。示例代码如下:


package com.android.matrix;import android.app.Activity;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.graphics.Matrix;import android.graphics.drawable.BitmapDrawable;import android.os.Bundle;import android.view.ViewGroup.LayoutParams;import android.widget.ImageView;import android.widget.LinearLayout;import android.widget.ImageView.ScaleType;/** * Android实现图片缩放与旋转。 * @author Administrator * */public class MatixActivity extends Activity {    public void onCreate(Bundle icicle) {                super.onCreate(icicle);                setTitle("Android实现图片缩放与旋转。");        LinearLayout linLayout = new LinearLayout(this);                //加载需要操作的图片,这里是一张图片        Bitmap bitmapOrg = BitmapFactory.decodeResource(getResources(),R.drawable.r);                //获取这个图片的宽和高        int width = bitmapOrg.getWidth();        int height = bitmapOrg.getHeight();                //定义预转换成的图片的宽度和高度        int newWidth = 200;        int newHeight = 200;                //计算缩放率,新尺寸除原始尺寸        float scaleWidth = ((float) newWidth) / width;        float scaleHeight = ((float) newHeight) / height;                // 创建操作图片用的matrix对象        Matrix matrix = new Matrix();                // 缩放图片动作        matrix.postScale(scaleWidth, scaleHeight);                //旋转图片 动作        matrix.postRotate(45);                // 创建新的图片        Bitmap resizedBitmap = Bitmap.createBitmap(bitmapOrg, 0, 0,        width, height, matrix, true);                //将上面创建的Bitmap转换成Drawable对象,使得其可以使用在ImageView, ImageButton中        BitmapDrawable bmd = new BitmapDrawable(resizedBitmap);                //创建一个ImageView        ImageView imageView = new ImageView(this);                // 设置ImageView的图片为上面转换的图片        imageView.setImageDrawable(bmd);                //将图片居中显示        imageView.setScaleType(ScaleType.CENTER);                //将ImageView添加到布局模板中        linLayout.addView(imageView,        new LinearLayout.LayoutParams(        LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT        )        );                // 设置为本activity的模板        setContentView(linLayout);     }  }


上例是静态地实现图片缩放,下例中可以通过鼠标滑轮和方向键实现图片动态的放大与缩小。

程序结构如下图:

Zoom.java文件中代码:



package com.android.zooming;import android.view.View;import android.content.Context;  import android.graphics.Canvas;  import android.graphics.drawable.Drawable;  import android.view.KeyEvent;  public class Zoom extends View {     private Drawable image;       private int zoomControler=20;            public Zoom(Context context){           super(context);           image=context.getResources().getDrawable(R.drawable.x);           setFocusable(true);       }            @Override       protected void onDraw(Canvas canvas) {           // TODO Auto-generated method stub           super.onDraw(canvas);           //控制图像的宽度和高度         image.setBounds((getWidth()/2)-zoomControler, (getHeight()/2)-zoomControler, (getWidth()/2)+zoomControler, (getHeight()/2)+zoomControler);           image.draw(canvas);       }            @Override       public boolean onKeyDown(int keyCode, KeyEvent event) {                              if(keyCode==KeyEvent.KEYCODE_DPAD_UP)//放大                      zoomControler+=10;                            if(keyCode==KeyEvent.KEYCODE_DPAD_DOWN) //缩小                     zoomControler-=10;                            if(zoomControler<10)                       zoomControler=10;                              invalidate();               return true;       }  }  



最后,希望转载的朋友能够尊重作者的劳动成果,加上转载地址:http://www.cnblogs.com/hanyonglu/archive/2012/02/11/2346273.html谢谢。

完毕。^_^

更多相关文章

  1. android 实现流媒体播放远程mp3文件代码
  2. ANDROID实现圆形图形不断旋转的动画
  3. Android播放GIF图片
  4. android 图片进度条
  5. Android实现模拟点击的一种方法
  6. android收藏
  7. Android显示网络图片相关实现方法浅谈
  8. Android开场透明度渐变动画
  9. 浅谈Java中Collections.sort对List排序的两种方法

随机推荐

  1. android 获取系统电量
  2. 【黑科技】钉钉自动打卡
  3. Android 获取控件高度宽度三种方法,防止0
  4. Android的webview加载本地html、本apk内h
  5. Android(安卓)Binder 分析——内存管理
  6. ANDROID工作学习笔记之ANDROID:SCALETYPE
  7. Android 屏幕常亮 背景常亮
  8. android shape使用总结
  9. 整理的一些免费课程分享
  10. Android View预估大小