我是靠谱客的博主 无聊战斗机,最近开发中收集的这篇文章主要介绍android 图片管理器 位移,Android图片旋转,缩放,位移,倾斜,对称完整示例(二)——Bitmap.createBitmap()和Matrix...,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

package cc.c;

import android.app.Activity;

import android.graphics.Bitmap;

import android.graphics.Matrix;

import android.graphics.drawable.BitmapDrawable;

import android.os.Bundle;

import android.widget.ImageView;

/**

* Demo描述:

* 利用Bitmap.createBitmap()和Matrix实现图像

* 的旋转,缩放,位移,倾斜.

* 该方式的作用和mImageView.setImageMatrix(matrix);

* 是一样的

*

* 备注说明:

* 利用Bitmap.createBitmap()和Matrix的方式没有实现图像

* 关于X轴,Y轴和XY的对称.

* 明白怎么实现的coder请指点,多谢.

*

*/

public class MainActivity extends Activity {

private Bitmap mBitmap;

private Bitmap mNewBitmap;

private ImageView mImageView;

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

init();

}

private void init(){

mImageView=(ImageView) findViewById(R.id.imageView);

mImageView.setScaleType(ImageView.ScaleType.MATRIX);

BitmapDrawable bitmapDrawable=(BitmapDrawable) mImageView.getDrawable();

mBitmap=bitmapDrawable.getBitmap();

//平移的两种方式,效果一致

//testTranslate1(mBitmap);

testTranslate2(mBitmap);

//围绕图片中心点旋转且位移的两种方式,效果一致

//testRotate1(mBitmap);

//testRotate2(mBitmap);

//围绕原点旋转后平移的两种方式,效果一致

//testRotateAndTranslate1(mBitmap);

//testRotateAndTranslate2(mBitmap);

//测试缩放的两种方式,效果一致

//testScale1();

//testScale2(mBitmap);

//测试倾斜各两种方式,效果一致

//testSkewX1();

//testSkewX2(mBitmap);

//testSkewY1();

//testSkewY2(mBitmap);

//testSkewXY1();

//testSkewXY2(mBitmap);

//测试对称

//testSymmetryX(mBitmap);

//testSymmetryY(mBitmap);

//testSymmetryXY(mBitmap);

}

//平移的方式一

private void testTranslate1(Bitmap bitmap){

Matrix matrix=new Matrix();

int width=bitmap.getWidth();

int height=bitmap.getHeight();

matrix.postTranslate(width, height);

mImageView.setImageMatrix(matrix);

}

//平移的方式二

private void testTranslate2(Bitmap bitmap){

Matrix matrix=mImageView.getImageMatrix();

int width=bitmap.getWidth();

int height=bitmap.getHeight();

matrix.postTranslate(width, height);

mNewBitmap=Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false);

mImageView.setImageBitmap(mNewBitmap);

}

//围绕图片中心点旋转且位移的方式一

private void testRotate1(Bitmap bitmap){

Matrix matrix=new Matrix();

int width=bitmap.getWidth();

int height=bitmap.getHeight();

matrix.postRotate(45f, width/2, height/2);

matrix.postTranslate(width, height);

mImageView.setImageMatrix(matrix);

}

//围绕图片中心点旋转且位移的方式二

//注意问题:

//在方式一种旋转45°采用matrix.postRotate(45f, width/2, height/2);即可

//但在方式二中只需旋转22.5度matrix.postRotate(45/2f, width/2, height/2);

private void testRotate2(Bitmap bitmap){

Matrix matrix=mImageView.getImageMatrix();

int width=bitmap.getWidth();

int height=bitmap.getHeight();

matrix.postRotate(45/2f, width/2, height/2);

matrix.postTranslate(width, height);

mNewBitmap=Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false);

mImageView.setImageBitmap(mNewBitmap);

}

//围绕原点旋转后平移的方式一

private void testRotateAndTranslate1(Bitmap bitmap) {

Matrix matrix = new Matrix();

int width =bitmap.getWidth();

int height = bitmap.getHeight();

matrix.setRotate(45f);

matrix.postTranslate(width, height);

mImageView.setImageMatrix(matrix);

}

//围绕原点旋转后平移的方式二

//注意问题:

//同上

private void testRotateAndTranslate2(Bitmap bitmap) {

Matrix matrix = mImageView.getImageMatrix();

int width =bitmap.getWidth();

int height = bitmap.getHeight();

matrix.setRotate(45/2f);

matrix.postTranslate(width, height);

mNewBitmap=Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false);

mImageView.setImageBitmap(mNewBitmap);

}

//缩放的方式一

private void testScale1() {

Matrix matrix = new Matrix();

matrix.setScale(0.5f, 0.5f);

mImageView.setImageMatrix(matrix);

}

//缩放的方式二

private void testScale2(Bitmap bitmap) {

Matrix matrix = new Matrix();

int width =bitmap.getWidth();

int height = bitmap.getHeight();

matrix.setScale(0.5f, 0.5f);

mNewBitmap=Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false);

mImageView.setImageBitmap(mNewBitmap);

}

//水平倾斜的方式一

private void testSkewX1() {

Matrix matrix = new Matrix();

matrix.setSkew(0.5f, 0);

mImageView.setImageMatrix(matrix);

}

//水平倾斜的方式二

private void testSkewX2(Bitmap bitmap) {

Matrix matrix = new Matrix();

int width =bitmap.getWidth();

int height = bitmap.getHeight();

matrix.setSkew(0.5f, 0);

mNewBitmap=Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false);

mImageView.setImageBitmap(mNewBitmap);

}

// 垂直倾斜的方式一

private void testSkewY1() {

Matrix matrix = new Matrix();

matrix.setSkew(0, 0.5f);

mImageView.setImageMatrix(matrix);

}

// 垂直倾斜的方式二

private void testSkewY2(Bitmap bitmap) {

Matrix matrix = new Matrix();

int width =bitmap.getWidth();

int height = bitmap.getHeight();

matrix.setSkew(0, 0.5f);

mNewBitmap=Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false);

mImageView.setImageBitmap(mNewBitmap);

}

// 水平且垂直倾斜的方式一

private void testSkewXY1() {

Matrix matrix = new Matrix();

matrix.setSkew(0.5f, 0.5f);

mImageView.setImageMatrix(matrix);

}

// 水平且垂直倾斜的方式二

private void testSkewXY2(Bitmap bitmap) {

Matrix matrix = new Matrix();

int width =bitmap.getWidth();

int height = bitmap.getHeight();

matrix.setSkew(0.5f, 0.5f);

mNewBitmap=Bitmap.createBitmap(bitmap, 0, 0, width, height, matrix, false);

mImageView.setImageBitmap(mNewBitmap);

}

// 水平对称--图片关于X轴对称

private void testSymmetryX(Bitmap bitmap) {

Matrix matrix = new Matrix();

int height =bitmap.getHeight();

float matrixValues[] = { 1f, 0f, 0f, 0f, -1f, 0f, 0f, 0f, 1f };

matrix.setValues(matrixValues);

//若是matrix.postTranslate(0, height);//表示将图片上下倒置

matrix.postTranslate(0, height*2);

mImageView.setImageMatrix(matrix);

}

// 垂直对称--图片关于Y轴对

private void testSymmetryY(Bitmap bitmap) {

Matrix matrix = new Matrix();

int width=bitmap.getWidth();

float matrixValues[] = {-1f, 0f, 0f, 0f, 1f, 0f, 0f, 0f, 1f};

matrix.setValues(matrixValues);

//若是matrix.postTranslate(width,0);//表示将图片左右倒置

matrix.postTranslate(width*2, 0);

mImageView.setImageMatrix(matrix);

}

// 关于X=Y对称

private void testSymmetryXY(Bitmap bitmap) {

Matrix matrix = new Matrix();

int width = bitmap.getWidth();

int height = bitmap.getHeight();

float matrixValues[] = { 0f, -1f, 0f, -1f, 0f, 0f, 0f, 0f, 1f };

matrix.setValues(matrixValues);

matrix.postTranslate(width+height, width+height);

mImageView.setImageMatrix(matrix);

}

}

main.xml如下:

android:layout_width="fill_parent"

android:layout_height="fill_parent"

>

android:id="@+id/imageView"

android:layout_width="fill_parent"

android:layout_height="fill_parent"

android:src="@drawable/a"

/>

原文:http://blog.csdn.net/lfdfhl/article/details/28473065

最后

以上就是无聊战斗机为你收集整理的android 图片管理器 位移,Android图片旋转,缩放,位移,倾斜,对称完整示例(二)——Bitmap.createBitmap()和Matrix...的全部内容,希望文章能够帮你解决android 图片管理器 位移,Android图片旋转,缩放,位移,倾斜,对称完整示例(二)——Bitmap.createBitmap()和Matrix...所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(59)

评论列表共有 0 条评论

立即
投稿
返回
顶部