-
canvas.drawBitmap(bitmap, matrix, null);
-
super.onDraw(canvas);
-
}
-
@Override
-
public void setImageMatrix(Matrix matrix)
-
{
-
this.matrix.set(matrix);
-
super.setImageMatrix(matrix);
-
}
-
public Bitmap getImageBitmap()
-
{
-
return bitmap;
-
}
-
}
-
public boolean onTouch(View v, MotionEvent e)
-
{
-
if(e.getAction() == MotionEvent.ACTION_UP)
-
{
-
Matrix matrix = new Matrix();
-
// 输出图像的宽度和高度(162 x 251)
-
Log.e(“TestTransformMatrixActivity”, "image size: width x height = " + view.getImageBitmap().getWidth() + " x " + view.getImageBitmap().getHeight());
-
// 1. 平移
-
matrix.postTranslate(view.getImageBitmap().getWidth(), view.getImageBitmap().getHeight());
-
// 在x方向平移view.getImageBitmap().getWidth(),在y轴方向view.getImageBitmap().getHeight()
-
view.setImageMatrix(matrix);
-
// 下面的代码是为了查看matrix中的元素
-
float[] matrixValues = new float[9];
-
matrix.getValues(matrixValues);
-
for(int i = 0; i < 3; ++i)
-
{
-
String temp = new String();
-
for(int j = 0; j < 3; ++j)
-
{
-
temp += matrixValues[3 * i + j ] + “\t”;
-
}
-
Log.e(“TestTransformMatrixActivity”, temp);
-
}
-
// // 2. 旋转(围绕图像的中心点)
-
// matrix.setRotate(45f, view.getImageBitmap().getWidth() / 2f, view.getImageBitmap().getHeight() / 2f);
-
//
-
// // 做下面的平移变换,纯粹是为了让变换后的图像和原图像不重叠
-
// matrix.postTranslate(view.getImageBitmap().getWidth() * 1.5f, 0f);
-
// view.setImageMatrix(matrix);
-
//
-
// // 下面的代码是为了查看matrix中的元素
-
// float[] matrixValues = new float[9];
-
// matrix.getValues(matrixValues);
-
// for(int i = 0; i < 3; ++i)
-
// {
-
// String temp = new String();
-
// for(int j = 0; j < 3; ++j)
-
// {
-
// temp += matrixValues[3 * i + j ] + “\t”;
-
// }
-
// Log.e(“TestTransformMatrixActivity”, temp);
-
// }
-
// // 3. 旋转(围绕坐标原点) + 平移(效果同2)
-
// matrix.setRotate(45f);
-
// matrix.preTranslate(-1f * view.getImageBitmap().getWidth() / 2f, -1f * view.getImageBitmap().getHeight() / 2f);
-
// matrix.postTranslate((float)view.getImageBitmap().getWidth() / 2f, (float)view.getImageBitmap().getHeight() / 2f);
-
//
-
// // 做下面的平移变换,纯粹是为了让变换后的图像和原图像不重叠
-
// matrix.postTranslate((float)view.getImageBitmap().getWidth() * 1.5f, 0f);
-
// view.setImageMatrix(matrix);
-
//
-
// // 下面的代码是为了查看matrix中的元素
-
// float[] matrixValues = new float[9];
-
// matrix.getValues(matrixValues);
-
// for(int i = 0; i < 3; ++i)
-
// {
-
// String temp = new String();
-
// for(int j = 0; j < 3; ++j)
-
// {
-
// temp += matrixValues[3 * i + j ] + “\t”;
-
// }
-
// Log.e(“TestTransformMatrixActivity”, temp);
-
// }
-
// // 4. 缩放
-
// matrix.setScale(2f, 2f);
-
// // 下面的代码是为了查看matrix中的元素
-
// float[] matrixValues = new float[9];
-
// matrix.getValues(matrixValues);
-
// for(int i = 0; i < 3; ++i)
-
// {
-
// String temp = new String();
-
// for(int j = 0; j < 3; ++j)
-
// {
-
// temp += matrixValues[3 * i + j ] + “\t”;
-
// }
-
// Log.e(“TestTransformMatrixActivity”, temp);
-
// }
-
//
-
// // 做下面的平移变换,纯粹是为了让变换后的图像和原图像不重叠
Android中图像变换Matrix的原理应用,面试安卓系统架构
最新推荐文章于 2024-05-03 03:38:45 发布
本文深入探讨了Android中Matrix的原理及其在图像变换中的应用,包括平移、旋转、缩放和错切等操作。通过示例代码展示了如何在Android中实现这些变换,适合作为面试准备或系统架构理解的学习资料。
摘要由CSDN通过智能技术生成