`

图片的左右移动、旋转及放大缩小

阅读更多
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
	android:id="@+id/iamgeid"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
        <Button android:id="@+id/buttonLeft"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片向左移动"
            />
        <Button android:id="@+id/buttonRight"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片向右移动"
            />
        <Button android:id="@+id/buttonRotationLeft"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片左旋转"
            />
        <Button android:id="@+id/buttonRotationRight"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片右旋转"
            />
        <Button android:id="@+id/buttonNarrow"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片缩小"
            />
        <Button android:id="@+id/buttonEnlarge"
            android:layout_width="fill_parent" android:layout_height="wrap_content"
            android:text="图片放大"
            />
</LinearLayout>


package cn.m15.xys;

import android.app.Activity;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Canvas;
import android.graphics.Matrix;
import android.graphics.Paint;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.LinearLayout;

public class Image extends Activity {
    ImageView imageView = null;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
	imageView = new ImageView(this);
	setContentView(R.layout.image);
	LinearLayout ll = (LinearLayout) findViewById(R.id.iamgeid);
	ll.addView(imageView);
	// 向左移动
	Button botton0 = (Button) findViewById(R.id.buttonLeft);
	botton0.setOnClickListener(new OnClickListener() {
	    @Override
	    public void onClick(View arg0) {
		imageView.setPosLeft();
	    }
	});

	// 向右移动
	Button botton1 = (Button) findViewById(R.id.buttonRight);
	botton1.setOnClickListener(new OnClickListener() {
	    @Override
	    public void onClick(View arg0) {
		imageView.setPosRight();
	    }
	});
	// 左旋转
	Button botton2 = (Button) findViewById(R.id.buttonRotationLeft);
	botton2.setOnClickListener(new OnClickListener() {
	    @Override
	    public void onClick(View arg0) {
		imageView.setRotationLeft();
	    }
	});

	// 右旋转
	Button botton3 = (Button) findViewById(R.id.buttonRotationRight);
	botton3.setOnClickListener(new OnClickListener() {
	    @Override
	    public void onClick(View arg0) {
		imageView.setRotationRight();
	    }
	});

	// 缩小
	Button botton4 = (Button) findViewById(R.id.buttonNarrow);
	botton4.setOnClickListener(new OnClickListener() {

	    @Override
	    public void onClick(View arg0) {
		imageView.setNarrow();
	    }
	});

	// 放大
	Button botton5 = (Button) findViewById(R.id.buttonEnlarge);
	botton5.setOnClickListener(new OnClickListener() {

	    @Override
	    public void onClick(View arg0) {
		imageView.setEnlarge();
	    }
	});

	super.onCreate(savedInstanceState);

    }

    class ImageView extends View {
	Paint mPaint = null;
	Bitmap bitMap = null;
	Bitmap bitMapDisplay = null;
	int m_posX = 120;
	int m_posY = 50;
	int m_bitMapWidth = 0;
	int m_bitMapHeight = 0;
	Matrix mMatrix = null;
	float mAngle = 0.0f;
	float mScale = 1f;//1为原图的大小

	public ImageView(Context context) {
	    super(context);
	    mPaint = new Paint();
	    mPaint.setFlags(Paint.ANTI_ALIAS_FLAG);
	    bitMap = BitmapFactory.decodeResource(this.getResources(),
		    R.drawable.image);
	    bitMapDisplay = bitMap;
	    mMatrix = new Matrix();
	    // 获取图片宽高
	    m_bitMapWidth = bitMap.getWidth();
	    m_bitMapHeight = bitMap.getHeight();
	}

	// 向左移动
	public void setPosLeft() {
	    m_posX -= 10;
	}

	// 向右移动
	public void setPosRight() {
	    m_posX += 10;
	}

	// 向左旋转
	public void setRotationLeft() {
	    mAngle--;
	    setAngle();
	}

	// 向右旋转
	public void setRotationRight() {
	    mAngle++;
	    setAngle();
	}

	// 缩小图片
	public void setNarrow() {
	    if (mScale > 0.5) {
		mScale -= 0.1;
		setScale();
	    }
	}

	// 放大图片
	public void setEnlarge() {
	    if (mScale < 2) {
		mScale += 0.1;
		setScale();
	    }
	}

	// 设置缩放比例
	public void setAngle() {
	    mMatrix.reset();
	    mMatrix.setRotate(mAngle);
	    bitMapDisplay = Bitmap.createBitmap(bitMap, 0, 0, m_bitMapWidth,
		    m_bitMapHeight, mMatrix, true);
	}

	// 设置旋转比例
	public void setScale() {
	    mMatrix.reset();
	    //float sx X轴缩放 
	    //float sy Y轴缩放
	    mMatrix.postScale(mScale, mScale);
	    bitMapDisplay = Bitmap.createBitmap(bitMap, 0, 0, m_bitMapWidth,
		    m_bitMapHeight, mMatrix, true);
	}

	@Override
	protected void onDraw(Canvas canvas) {
	    super.onDraw(canvas);
	    canvas.drawBitmap(bitMapDisplay, m_posX, m_posY, mPaint);
	    invalidate();
	}
    }
}
分享到:
评论
1 楼 tsl782511648 2013-11-11  

相关推荐

    JS+Html图片放大缩小旋转拖动效果

    在JavaScript(JS)和HTML的结合使用中,可以创建丰富的用户体验,例如图片的放大、缩小、旋转和拖动查看功能。这些动态效果是现代网页设计中常见且实用的技术,能够增强用户与网页内容的交互性。下面将详细介绍如何...

    js完美实现同时拖拽、旋转、放大缩小图片的手势操作

    使用hammer.js 可以手势控制同时进行旋转 拖拽 放大缩小功能, 解决官网移动旋转复位效果, 重点解决官网旋转rotate demo旋转乱跳bug 官网:http://hammerjs.github.io/ (官网的demo真是坑 又是复位又是旋转抖动的....

    Silverlight图片放大缩小移动

    在本文中,我们将深入探讨如何在Silverlight应用中实现图片的放大、缩小和移动功能。Silverlight是微软推出的一种富互联网应用程序(RIA)技术,它允许开发者创建具有丰富媒体体验和交互性的Web应用。 首先,我们...

    图片放大、缩小、拖拽、旋转、全屏

    这个名为"图片放大、缩小、拖拽、旋转、全屏"的项目专注于提供一套完整的解决方案,使用户能够对图片进行一系列交互操作,包括但不限于缩放、移动、旋转以及全屏显示。这在网页设计、图像展示应用或任何需要用户互动...

    cropper+layui实现图片裁剪、旋转、放大缩小后上传

    总结来说,"cropper+layui实现图片裁剪、旋转、放大缩小后上传"是一个高效、易用的前端解决方案,它将cropper.js的强大图片处理能力与layui的优雅UI设计相结合,为开发人员提供了一个完整的图片编辑和上传工具,适用...

    html图片控制处理放大缩小移动多种案例(源码)

    html图片控制处理放大缩小移动多种案例(附源码),简约图片预览,仿京东图片放大镜效果,图片查看器,可放大缩小,旋转,图片放大镜效果,图片放大缩小查看,图片放大显示,支持滚轮调整大小,图片上下滑动缩略图字幕...

    图片缩小放大左右旋转

    综上所述,"图片缩小放大左右旋转"是图像处理中的基础操作,它们在各种场景下都有着广泛的应用,并且涉及到图像的几何变换、插值算法和坐标系转换等核心知识。掌握这些技术,对于理解和开发与图像相关的应用至关重要...

    微信小程序内拖动图片实现移动、放大、旋转的方法

    微信小程序内拖动图片实现移动、放大、旋转的方法涉及的技术点包括:触摸事件处理、画布绘图以及动态数据更新。以下是详细的技术知识点。 首先,了解微信小程序的基本布局和事件系统是关键。微信小程序的页面结构由...

    jQuery图片放大缩小旋转代码.zip

    本资源“jQuery图片放大缩小旋转代码.zip”提供了一个实用的图片查看插件,它允许用户在弹出窗口中查看图片,并具备一系列增强用户体验的功能,如放大、缩小、旋转以及上一张下一张切换。 首先,我们来看这个插件的...

    安卓手绘图片处理画板相关-可以自由画线设置线宽绘画图片图片可以移动旋转放大缩小。添加新图片保留原图片自由选择某个图片的操作可以撤销重绘添加背景编写文字描述.rar

    可以自由画线,设置线宽,绘画图片,图片可以移动、旋转、放大、缩小。添加新图片、保留原图片、自由选择某个图片的操作、可以撤销、重绘、添加背景、编写文字描述.rar,太多无法一一验证是否可用,程序如果跑不起来...

    C#图片放大,缩小,移动

    在C#编程环境中,开发图形用户界面(GUI)应用程序时,常常会涉及到图像处理操作,如图片的放大、缩小和移动。本示例基于C# 2005,使用PictureBox控件来实现这些功能。PictureBox是.NET Framework提供的一个强大控件...

    jquery图片放大缩小旋转代码.zip

    本项目"jquery图片放大缩小旋转代码"提供了利用jQuery实现图片的动态操作,如放大、缩小和旋转的功能。下面将详细解释这个功能的实现原理和步骤。 1. **HTML 结构**: 首先,我们需要在 HTML 页面中创建一个图片...

    javascript图片预览(滚动放大缩小和拖动查看)

    这个压缩包中的资源提供了一个实现滚动放大缩小和拖动查看图片的例子。下面将详细解释这个实现过程及其涉及的关键知识点。 首先,`test.html`是主HTML文件,它包含了整个预览功能的基本结构。在HTML中,你需要创建...

    js 双指缩放,双指放大,双击放大,移动端双指放大缩小

    在移动设备上,为了提供更好的用户体验,特别是在处理图像或视图时,双指缩放(Pinch Zoom)和双击放大缩小(Double Tap Zoom)功能是必不可少的。这些手势操作在许多应用程序和网页中被广泛使用,特别是对于查看高...

    android 图片放大缩小移动 demo

    这个“android 图片放大缩小移动 demo”项目旨在提供一个实例,演示如何在Android应用中实现这些功能。接下来,我们将深入探讨相关知识点。 1. **ImageView组件**:在Android中,显示图片的基本组件是`ImageView`。...

    通过手势对图片进行任意放大绽放旋转

    开发者需要根据手势的缩放比例动态调整图片的`scale`属性,从而实现图片的放大或缩小。 3. **图片旋转**: 图片旋转通常通过两个手指的旋转运动来实现。在Android中,可以结合`OnRotationGestureListener`来识别...

    多张图片预览,放大、缩小、旋转

    本话题主要关注如何实现“多张图片预览,放大、缩小、旋转”这一特性,这通常涉及到前端开发中的JavaScript库或者移动端的原生API。 首先,我们要理解这个功能的组成部分: 1. **多张图片预览**:这通常涉及到图片...

    uni-app 利用canvas进行画框,移动框,放大缩小并删除,目前支持小程序,h5,其他没测试过

    uni-app 利用canvas进行画框,移动框,放大缩小并删除,目前支持小程序,h5,其他没测试过

    图片旋转,图片的放大缩小,由于运用了GDI+库,使得转换更加快速。

    在计算机图形处理领域,图片旋转和放大缩小是常见的操作,特别是在图像编辑、设计以及多媒体应用中。GDI+(Graphics Device Interface Plus)是Windows操作系统提供的一种强大的图形处理库,它为开发者提供了丰富的...

    点击图片放大缩小

    "点击图片放大缩小"的功能就是一个典型的交互设计,它可以让用户更细致地查看图片而不影响页面的整体布局。这个功能通常通过JavaScript实现,因为JavaScript具有良好的动态效果处理能力,并且可以直接操作DOM(文档...

Global site tag (gtag.js) - Google Analytics