您的位置:首页 > 移动开发 > Android开发

Android 图片的平移、缩放、旋转demo

2014-05-06 15:46 351 查看
代码里都有注释:



package com.example.imgs;

import android.app.Activity;
import android.app.ActionBar;
import android.app.Fragment;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.ViewGroup;
import android.widget.ImageView;
import android.os.Build;

public class MainActivity extends Activity {
ImageView iv;
Canvas canvas;
Paint paint;
Bitmap map;
Bitmap bi;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
ImageView iv0 = (ImageView) findViewById(R.id.iv2);
iv = (ImageView) findViewById(R.id.iv2);
bi = BitmapFactory.decodeResource(getResources(), R.drawable.ic_launcher1);
paint = new Paint();
paint.setColor(Color.BLACK);

}
/**
* 缩放方法
* @param view
*/
public void click1(View view) {
// TODO Auto-generated method stub
map = Bitmap.createBitmap(bi.getWidth(), bi.getHeight(), bi.getConfig());
canvas = new Canvas(map);
Matrix matrix = new Matrix();
//设置宽度缩放1/2
matrix.setScale(0.5f, 1);
canvas.drawBitmap(bi, matrix, paint);
iv.setImageBitmap(map);
}
/**
* 旋转
* @param view
*/
public void click2(View view) {
// TODO Auto-generated method stub
map = Bitmap.createBitmap(bi.getWidth(), bi.getHeight(), bi.getConfig());
canvas = new Canvas(map);
Matrix matrix = new Matrix();
//设置旋转30°,以图片中心
matrix.setRotate(30,bi.getWidth()/2,bi.getHeight()/2);
//设置算法,处理旋转后效果
paint.setAntiAlias(true);
canvas.drawBitmap(bi, matrix, paint);
iv.setImageBitmap(map);
}
/**
* 平移
* @param view
*/
public void click3(View view) {
map = Bitmap.createBitmap(bi.getWidth(), bi.getHeight(), bi.getConfig());
canvas = new Canvas(map);
// TODO Auto-generated method stub
Matrix matrix = new Matrix();
//向左平移10,向下平移10
matrix.setTranslate(10, 10);
canvas.drawBitmap(bi, matrix, paint);
iv.setImageBitmap(map);
}

public void click4(View view) {
map = Bitmap.createBitmap(bi.getWidth(), bi.getHeight(), bi.getConfig());
canvas = new Canvas(map);
// TODO Auto-generated method stub
Matrix matrix = new Matrix();
//镜子效果
matrix.setScale(-1, 1);
matrix.postTranslate(bi.getWidth(), 0);
//倒影效果
// matrix.setScale(1, -1);
// matrix.postTranslate(0, bi.getHeight());
canvas.drawBitmap(bi, matrix, paint);
iv.setImageBitmap(map);
}
}

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical" >

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<Button
android:id="@+id/button1"
android:onClick="click1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="缩放" />

<Button
android:id="@+id/button2"
android:onClick="click2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="旋转" />
<Button
android:id="@+id/button2"
android:onClick="click3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="平移" />
<Button
android:id="@+id/button2"
android:onClick="click4"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="镜子效果" />

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >

<ImageView
android:id="@+id/iv1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher1" />

<ImageView
android:id="@+id/iv2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:src="@drawable/ic_launcher1" />

</LinearLayout>

</LinearLayout>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android 图片 bitmap canvas