`
bogongjie
  • 浏览: 235403 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

Android图片旋转,缩放,移位,倾斜,对称

阅读更多

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;
	}

}

 

分享到:
评论

相关推荐

    android 利用matrix实现图片的旋转与缩放

    Matrix类在Android图形处理中扮演着重要角色,它是一个3x3的矩阵,用于进行2D变换,如平移、旋转、缩放和倾斜等。本教程将深入讲解如何利用Matrix实现图片的旋转与缩放。 首先,我们需要了解Matrix的基本操作。在...

    图片旋转缩放触控

    在移动开发中,通常会使用特定的图片视图组件,如Android的ImageView和iOS的UIImageView,它们支持图片的显示、旋转和缩放。这些组件通常具有内置的触控处理机制,允许开发者方便地添加交互功能。 5. 多点触控支持...

    android 图片手势缩放

    在Android开发中,图片手势缩放是用户交互中常见的功能,尤其在查看照片、地图或者任何需要用户放大或缩小内容的应用中。这个示例着重于实现Android图片的手势缩放功能,通过监听用户的触摸事件来调整图片的大小,...

    android图片预览缩放

    在Android开发中,图片预览和缩放是一个常见的需求,特别是在设计用户界面或者处理相机拍摄的照片时。`ScaleView`通常是指一个自定义视图,用于实现图片的平滑缩放和平移功能。本文将深入探讨Android图片预览缩放的...

    Android例子源码图片旋转缩放加盖水印透明倾斜扭曲处理.zip

    本项目是一个图片处理的综合例子源码,实现了图片的旋转,缩放,加盖水印,透明,倾斜,扭曲用到的图片是使用httpclient 实现在线图片的下载展示,并实现图片处理。如果,网络图片不存在了,请在代码中修改图片路径...

    Android-一个Android图片缩放查看控件支持手势

    这个名为"Android-一个Android图片缩放查看控件支持手势"的项目,旨在提供一个自定义的视图控件,它允许用户通过手势进行图片的放大、缩小以及平移操作,提升用户体验。下面我们将深入探讨这个控件的关键知识点和...

    Android例子源码图片旋转缩放加盖水印透明倾斜扭曲处理

    本项目是一个图片处理的综合例子源码,实现了图片的旋转,缩放,加盖水印,透明,倾斜,扭曲用到的图片是使用httpclient 实现在线图片的下载展示,并实现图片处理。如果,网络图片不存在了,请在代码中修改图片路径...

    android ImageView控件缩放和旋转图片源码.rar

    这个压缩包“android ImageView控件缩放和旋转图片源码.rar”显然包含了一个实现ImageView图片缩放和旋转功能的示例代码。下面将详细解释Android中ImageView的缩放和旋转操作,并给出相关知识点。 1. **ImageView的...

    android图片缩放双击旋转效果

    在Android开发中,实现图片的缩放、双击旋转以及拖动展示是一项常见的需求,尤其在设计用户界面或开发图像处理应用时。本教程将详细讲解如何在Android中实现这样的功能,主要涉及以下几个核心知识点: 1. **...

    Android实现图片手势缩放、移动、双击放大缩小

    Android实现图片手势缩放、移动、双击放大缩小。

    Android 图片双指缩放 单指拖拽 、拖到边界回弹

    在Android开发中,实现图片的双指缩放和单指拖拽是常见的需求,尤其在设计用户界面或者创建自定义视图时。这种功能能够提供更丰富的交互体验,让用户能够自由地查看和操作图片。本篇文章将深入探讨如何在Android应用...

    android手势旋转,缩放,移动图片

    在Android开发中,图片的旋转、平移和缩放是常见的交互操作,特别是在设计用户界面或者制作图片编辑应用时。为了实现这些功能并确保图片显示无锯齿,我们需要理解一些核心概念和技术。以下是对这些知识点的详细阐述...

    android imageview 图片缩放

    本文将深入探讨如何在Android中实现ImageView的图片缩放功能,同时结合异步加载和Activity的半透明效果,提升用户体验。 首先,我们要理解Android中ImageView的基本用法。ImageView可以设置为固定大小或根据图片...

    Android应用源码之安卓图片旋转放大缩写透明度调整例子.zip

    综上所述,这个压缩包提供了一个学习Android图片处理的实践案例,涵盖了基本的图片操作技术,包括旋转、缩放和透明度调整。通过深入研究源代码,开发者不仅可以掌握这些技能,还能了解如何在实际项目中运用它们。

    Android实现图片单点旋转缩放保存-仿百度魔图

    在Android平台上,实现图片的单点旋转和缩放并保存是一项常见的需求,尤其在开发图像编辑应用时。本文将深入探讨如何实现这个功能,模仿百度魔图的效果。 首先,我们需要理解Android中的ImageView组件。ImageView是...

    易语言图片旋转缩放

    易语言图片旋转缩放源码,图片旋转缩放,刷新画板,鼠标左键按下,鼠标左键放开,鼠标双击,取像素边长,图片到缓冲数据,鼠标右键放开,改变尺寸,是画分形图模式,时钟周期事件,取完成度,求迭代次数,着色,鼠标位置被移动,图片...

    Android ImageView控件缩放和旋转图片源码-IT计算机-毕业设计.zip

    - Android的`Animator`类族可以用于实现平滑的图片缩放和旋转动画。 - `ObjectAnimator`可以从一个值平滑过渡到另一个值,例如,从一个旋转角度到另一个旋转角度。 - `ValueAnimator`也可以实现类似效果,但需要...

    Android实现图片缩放功能

    在Android开发中,图片缩放是一项常见的需求,特别是在ImageView组件中展示大图时,用户可能需要通过手势来放大或缩小图片以查看细节。本篇将详细介绍如何在Android中实现图片的缩放功能,特别是利用ImageView结合...

    android手势处理图片平移、缩放和旋转

    "android手势处理图片平移、缩放和旋转"这个主题涉及到的主要知识点包括Android手势检测、ImageView的扩展以及图片操作。 首先,我们要了解Android的手势检测。Android系统提供了一套GestureDetector和...

    android图片旋转、淡入淡出、缩放、移动效果

    以上代码演示了Android中实现图片旋转、淡入淡出、缩放和移动的基本方法。实际应用时,还可以结合使用这些动画,创建更复杂的组合动画,例如同时执行多个动画,或者设置动画监听器以在动画开始、结束或更新时执行...

Global site tag (gtag.js) - Google Analytics