1.初始化:
private TestMatrixImageView mTestMatrixImageView; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); mTestMatrixImageView=new TestMatrixImageView(MainActivity.this); mTestMatrixImageView.setScaleType(ImageView.ScaleType.MATRIX);//?? mTestMatrixImageView.setOnTouchListener(new TouchListenerImpl()); setContentView(mTestMatrixImageView); }
a.平移:
private void testTranslate(){ Matrix matrix=new Matrix(); int width=mTestMatrixImageView.getBitmap().getWidth(); int height=mTestMatrixImageView.getBitmap().getHeight(); matrix.postTranslate(width, height); mTestMatrixImageView.setImageMatrix(matrix); showMatrixEveryValue(matrix); }
b.围绕图片中心点旋转:
private void testRotate(){ Matrix matrix=new Matrix(); int width=mTestMatrixImageView.getBitmap().getWidth(); int height=mTestMatrixImageView.getBitmap().getHeight(); matrix.postRotate(45f, width/2, height/2); matrix.postTranslate(width, height); mTestMatrixImageView.setImageMatrix(matrix); showMatrixEveryValue(matrix); }
c.缩放:
private void testScale() { Matrix matrix = new Matrix(); matrix.setScale(0.5f, 0.5f); mTestMatrixImageView.setImageMatrix(matrix); showMatrixEveryValue(matrix); }
d.水平倾斜:
private void testSkewX() { Matrix matrix = new Matrix(); matrix.setSkew(0.5f, 0); mTestMatrixImageView.setImageMatrix(matrix); showMatrixEveryValue(matrix); }
e.垂直倾斜:
private void testSkewY() { Matrix matrix = new Matrix(); matrix.setSkew(0, 0.5f); mTestMatrixImageView.setImageMatrix(matrix); showMatrixEveryValue(matrix); }
f. 水平且垂直倾斜:
private void testSkewXY() { Matrix matrix = new Matrix(); matrix.setSkew(0.5f, 0.5f); mTestMatrixImageView.setImageMatrix(matrix); showMatrixEveryValue(matrix); }
g.水平对称--图片关于X轴对称
private void testSymmetryX() { Matrix matrix = new Matrix(); int height = mTestMatrixImageView.getBitmap().getHeight(); float matrixValues[] = { 1f, 0f, 0f, 0f, -1f, 0f, 0f, 0f, 1f }; matrix.setValues(matrixValues); //若是matrix.postTranslate(0, height); //表示将图片上下倒置 matrix.postTranslate(0, height*2); mTestMatrixImageView.setImageMatrix(matrix); showMatrixEveryValue(matrix); }
h.垂直对称--图片关于Y轴对称:
private void testSymmetryY() { Matrix matrix = new Matrix(); int width=mTestMatrixImageView.getBitmap().getWidth(); float matrixValues[] = {-1f, 0f, 0f, 0f, 1f, 0f, 0f, 0f, 1f}; matrix.setValues(matrixValues); //若是matrix.postTranslate(width,0); //表示将图片左右倒置 matrix.postTranslate(width*2, 0); mTestMatrixImageView.setImageMatrix(matrix); showMatrixEveryValue(matrix); }
j.关于X=Y对称--图片关于X=Y轴对称:
private void testSymmetryXY() { Matrix matrix = new Matrix(); int width = mTestMatrixImageView.getBitmap().getWidth(); int height = mTestMatrixImageView.getBitmap().getHeight(); float matrixValues[] = { 0f, -1f, 0f, -1f, 0f, 0f, 0f, 0f, 1f }; matrix.setValues(matrixValues); matrix.postTranslate(width+height, width+height); mTestMatrixImageView.setImageMatrix(matrix); showMatrixEveryValue(matrix); }
testMatrixImageView.java:
public class TestMatrixImageView extends ImageView{ private Matrix mMatrix; private Bitmap mBitmap; public TestMatrixImageView(Context context) { super(context); mMatrix=new Matrix(); mBitmap=BitmapFactory.decodeResource(getResources(), R.drawable.icon); } @Override protected void onDraw(Canvas canvas) { System.out.println("---> onDraw"); //画原图 canvas.drawBitmap(mBitmap, 0, 0, null); //画经过Matrix变化后的图 canvas.drawBitmap(mBitmap, mMatrix, null); super.onDraw(canvas); } @Override public void setImageMatrix(Matrix matrix) { System.out.println("---> setImageMatrix"); this.mMatrix.set(matrix); super.setImageMatrix(matrix); } public Bitmap getBitmap(){ System.out.println("---> getBitmap"); return mBitmap; } }
相关推荐
Matrix类在Android图形处理中扮演着重要角色,它是一个3x3的矩阵,用于进行2D变换,如平移、旋转、缩放和倾斜等。本教程将深入讲解如何利用Matrix实现图片的旋转与缩放。 首先,我们需要了解Matrix的基本操作。在...
在移动开发中,通常会使用特定的图片视图组件,如Android的ImageView和iOS的UIImageView,它们支持图片的显示、旋转和缩放。这些组件通常具有内置的触控处理机制,允许开发者方便地添加交互功能。 5. 多点触控支持...
在Android开发中,图片手势缩放是用户交互中常见的功能,尤其在查看照片、地图或者任何需要用户放大或缩小内容的应用中。这个示例着重于实现Android图片的手势缩放功能,通过监听用户的触摸事件来调整图片的大小,...
在Android开发中,图片预览和缩放是一个常见的需求,特别是在设计用户界面或者处理相机拍摄的照片时。`ScaleView`通常是指一个自定义视图,用于实现图片的平滑缩放和平移功能。本文将深入探讨Android图片预览缩放的...
本项目是一个图片处理的综合例子源码,实现了图片的旋转,缩放,加盖水印,透明,倾斜,扭曲用到的图片是使用httpclient 实现在线图片的下载展示,并实现图片处理。如果,网络图片不存在了,请在代码中修改图片路径...
这个名为"Android-一个Android图片缩放查看控件支持手势"的项目,旨在提供一个自定义的视图控件,它允许用户通过手势进行图片的放大、缩小以及平移操作,提升用户体验。下面我们将深入探讨这个控件的关键知识点和...
本项目是一个图片处理的综合例子源码,实现了图片的旋转,缩放,加盖水印,透明,倾斜,扭曲用到的图片是使用httpclient 实现在线图片的下载展示,并实现图片处理。如果,网络图片不存在了,请在代码中修改图片路径...
这个压缩包“android ImageView控件缩放和旋转图片源码.rar”显然包含了一个实现ImageView图片缩放和旋转功能的示例代码。下面将详细解释Android中ImageView的缩放和旋转操作,并给出相关知识点。 1. **ImageView的...
在Android开发中,实现图片的缩放、双击旋转以及拖动展示是一项常见的需求,尤其在设计用户界面或开发图像处理应用时。本教程将详细讲解如何在Android中实现这样的功能,主要涉及以下几个核心知识点: 1. **...
Android实现图片手势缩放、移动、双击放大缩小。
在Android开发中,实现图片的双指缩放和单指拖拽是常见的需求,尤其在设计用户界面或者创建自定义视图时。这种功能能够提供更丰富的交互体验,让用户能够自由地查看和操作图片。本篇文章将深入探讨如何在Android应用...
在Android开发中,图片的旋转、平移和缩放是常见的交互操作,特别是在设计用户界面或者制作图片编辑应用时。为了实现这些功能并确保图片显示无锯齿,我们需要理解一些核心概念和技术。以下是对这些知识点的详细阐述...
本文将深入探讨如何在Android中实现ImageView的图片缩放功能,同时结合异步加载和Activity的半透明效果,提升用户体验。 首先,我们要理解Android中ImageView的基本用法。ImageView可以设置为固定大小或根据图片...
综上所述,这个压缩包提供了一个学习Android图片处理的实践案例,涵盖了基本的图片操作技术,包括旋转、缩放和透明度调整。通过深入研究源代码,开发者不仅可以掌握这些技能,还能了解如何在实际项目中运用它们。
在Android平台上,实现图片的单点旋转和缩放并保存是一项常见的需求,尤其在开发图像编辑应用时。本文将深入探讨如何实现这个功能,模仿百度魔图的效果。 首先,我们需要理解Android中的ImageView组件。ImageView是...
易语言图片旋转缩放源码,图片旋转缩放,刷新画板,鼠标左键按下,鼠标左键放开,鼠标双击,取像素边长,图片到缓冲数据,鼠标右键放开,改变尺寸,是画分形图模式,时钟周期事件,取完成度,求迭代次数,着色,鼠标位置被移动,图片...
- Android的`Animator`类族可以用于实现平滑的图片缩放和旋转动画。 - `ObjectAnimator`可以从一个值平滑过渡到另一个值,例如,从一个旋转角度到另一个旋转角度。 - `ValueAnimator`也可以实现类似效果,但需要...
在Android开发中,图片缩放是一项常见的需求,特别是在ImageView组件中展示大图时,用户可能需要通过手势来放大或缩小图片以查看细节。本篇将详细介绍如何在Android中实现图片的缩放功能,特别是利用ImageView结合...
"android手势处理图片平移、缩放和旋转"这个主题涉及到的主要知识点包括Android手势检测、ImageView的扩展以及图片操作。 首先,我们要了解Android的手势检测。Android系统提供了一套GestureDetector和...
以上代码演示了Android中实现图片旋转、淡入淡出、缩放和移动的基本方法。实际应用时,还可以结合使用这些动画,创建更复杂的组合动画,例如同时执行多个动画,或者设置动画监听器以在动画开始、结束或更新时执行...