Android图片旋转,缩放,位移,倾斜,对称完整示例(二)——Bitmap.createBitmap()和Matrix
来源:互联网 发布:mac安装win10步骤 编辑:程序博客网 时间:2024/05/11 00:03
MainActivity如下:
main.xml如下:
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如下:
<?xml version="1.0" encoding="utf-8"?><RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="fill_parent" > <ImageView android:id="@+id/imageView" android:layout_width="fill_parent" android:layout_height="fill_parent" android:src="@drawable/a" /> </RelativeLayout>
0 0
- Android图片旋转,缩放,位移,倾斜,对称完整示例(二)——Bitmap.createBitmap()和Matrix
- Android图片旋转,缩放,位移,倾斜,对称完整示例(一)——imageView.setImageMatrix(matrix)和Matrix
- Android图片旋转,缩放,位移,倾斜,对称完整示例(一)——imageView.setImageMatrix(matrix)和Matrix
- Android图片旋转,缩放,位移,倾斜,对称完整示例(一)——imageView.setImageMatrix(matrix)和Matrix .
- Android缩放图片和旋转图片示例
- Android 绘图基础:Bitmap(位图)与Matrix(矩阵)实现图片5种操作(平移、旋转、错切、缩放、对称)
- android中的matrix的简单应用--translate(平移),rotate(旋转),scale(缩放)和skew(倾斜)
- Android matrix偏移(平移),旋转,缩放,倾斜的原理
- Android--图片裁剪-Bitmap.createBitmap
- Android里实现Bitmap图片的旋转和缩放
- Android中利用Matrix实现图片平移、缩放和旋转
- Android Matrix对图片进行倾斜、缩放变换
- Matrix缩放图片, 旋转图片
- [Android]android.graphics.Camera实现图像的旋转、缩放,配合Matrix实现图像的倾斜
- [Android]android.graphics.Camera实现图像的旋转、缩放,配合Matrix实现图像的倾斜
- android.graphics.Camera实现图像的旋转、缩放,配合Matrix实现图像的倾斜
- android.graphics.Camera实现图像的旋转、缩放,配合Matrix实现图像的倾斜
- Bitmap createBitmap参数(二)
- WebBrowser控件跨域访问页面内容
- Android 用户界面---操作栏(Action Bar 五)
- FPGA大数据之我认为的明天
- 平衡二叉树
- java htmlparser 简单使用入门
- Android图片旋转,缩放,位移,倾斜,对称完整示例(二)——Bitmap.createBitmap()和Matrix
- B/S和C/S的区别
- 格式化日期为具体的时间描述
- Swift之控制流程语句
- Swift 编程语言首席架构师 Chris Lattner 简介
- PAT3-08. 堆栈模拟队列
- 那些你不知道的项目管理细节(二)
- cocos2dx 3.0 使用ant生成apk
- 23 Out of 5 uva+回溯