本文使用Matrix实现Android实现图片缩放与旋转:
package com.xfh.matixactivity;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Matrix;
import android.os.Bundle;
import android.view.Menu;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.LinearLayout;
/**
*
* 实现图片绽放与旋转
* @author lenovo
*
*/
public class MainActivity extends Activity
{
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setTitle("图片绽放与旋转");
LinearLayout linLayout = new LinearLayout(MainActivity.this);
// 加载要操作的图片
Bitmap bitmap = BitmapFactory.decodeResource(getResources(),
R.drawable.a);
// 获取图片的宽度和高度
int width = bitmap.getWidth();
int height = bitmap.getHeight();
// 定义将预转换成的高度与宽度
int newWidth = 200;
int newHeight = 200;
//计算缩放率,新尺寸除原始尺寸
float scaleWidth = (float)newWidth / width; // 强转为float不能去掉,否则结果为0.0,且程序报width,height must>0
float scaleHeight = (float)newHeight / height;
// 创建操作图片用的matrix对象
Matrix matrix = new Matrix();
// 缩放图片动作
matrix.postScale(scaleWidth, scaleHeight);
//上面的计算是为了得到缩放比例,如果知道绽放比例,可以不计算,直接用缩放比例作参数
// matrix.postScale(0.5f, 0.5f);
//旋转图片 动作
matrix.postRotate(45);
// 创建新的图片 width 和 height 是原图片的尺寸
Bitmap newBitmap = Bitmap.createBitmap(bitmap, 0, 0, width, height,
matrix, true);
ImageView imageView = new ImageView(this);
imageView.setImageBitmap(newBitmap);
// 将缩放后的图片放到 ImageView 的中间显示
imageView.setScaleType(ScaleType.CENTER);
// 将ImageView添加到布局模板中
linLayout.addView(imageView, new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT));
// 显示视图
setContentView(linLayout);
}
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}
}