<?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();
}
}
}
分享到:
相关推荐
使用hammer.js 可以手势控制同时进行旋转 拖拽 放大缩小功能, 解决官网移动旋转复位效果, 重点解决官网旋转rotate demo旋转乱跳bug 官网:http://hammerjs.github.io/ (官网的demo真是坑 又是复位又是旋转抖动的....
根据网上找的代码修改后的成品,实现了图片的方法,缩小,旋转,拖动查看等功能
实现Silverlight下的图片放大、缩小、移动功能
点击图片弹窗窗体(viewer.js和viewer.css)无需写样式直接调用,有放大、旋转、移动等丰富功能,直接绑定元素就能使用,小白教程
可以自由画线,设置线宽,绘画图片,图片可以移动、旋转、放大、缩小。添加新图片、保留原图片、自由选择某个图片的操作、可以撤销、重绘、添加背景、编写文字描述.rar,太多无法一一验证是否可用,程序如果跑不起来...
主要介绍了微信小程序内拖动图片实现移动、放大、旋转的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
html图片控制处理放大缩小移动多种案例(附源码),简约图片预览,仿京东图片放大镜效果,图片查看器,可放大缩小,旋转,图片放大镜效果,图片放大缩小查看,图片放大显示,支持滚轮调整大小,图片上下滑动缩略图字幕...
鼠标左键旋转,右键等比放大缩小,滚动滚轮放大缩小,按下滚轮相机上下移动,按键WASD移动。
双指缩放,图片双指缩放,在图片上有固定的坐标,并且点击固定坐标有相对应的事件触发,demo
uni-app 利用canvas进行画框,移动框,放大缩小并删除,目前支持小程序,h5,其他没测试过
JS图片查看器,带上下左右平移、放大缩小、图片旋转功能。很好很强大~!O(∩_∩)O 支持Firefox,除旋转以外的功能。
基于DevEco Studio 3.0 Beta1, SDK 5.0开发,支持图片旋转、裁剪框放大缩小及移动,鸿蒙的第三方组件适配移植的开源图片裁切项目
基于 cropper.js h5(移动端)裁剪、放大、缩小、移动,图片的案例
在安卓手机上,能通过识别触摸屏手势,实现图片的切换、旋转、缩放、移动及镜向
触屏版在线截图,可旋转、缩放、移动图片,截图使用了功能齐全的cropper插件
多张图片放大、缩小、移动、旋转,排版。希望能帮到大家,谢谢
使用hammer.js 可以手势控制同时进行旋转 拖拽 放大缩小功能, 解决官网移动旋转复位效果, 重点解决官网旋转rotate demo旋转乱跳bug 官网:http://hammerjs.github.io/ (官网的demo真是坑 又是复位又是旋转抖动的....
实现一个简单的绘图板,里面有填充、移动、旋转、放大、缩小等功能
使用 React+typescript 的组件库react实现图片的放大、缩小、旋转及移动功能组件npm install react-image-zoom --save使用// 引入组件import { ImgZoom } from 'react-image-zoom'// 代码示例... '', scale: 1, rotate:...
flashbuilder工程,支持序列的拖动旋转,并支持旋转过程中放大和缩小,并可以在放大级别上继续拖动