- 浏览: 139542 次
- 性别:
- 来自: 深圳
文章分类
最新评论
-
zhonglunshun:
恩,这样子阿,我去试试,多谢大师指点。
linux 下的eclipse支持GBK -
glassprogrammer:
复杂化了吧,不用执行任何命令,直接在eclipse中设置编码的 ...
linux 下的eclipse支持GBK -
Function:
用右手 alt + /
Eclipse 的Alt+/有问题或者不好用 -
ahack:
在windows下我一般设置成alt+a左手就能搞定,何必两只 ...
Eclipse 的Alt+/有问题或者不好用 -
houyujiangjun:
"每一次都逼迫我不得不重装系统"快捷键冲突 ...
Eclipse 的Alt+/有问题或者不好用
图片的拖拽很基础也很实用,很多地方用到,直接上干货。
MainActivity.java:
layout_main.xml:
ps:如果有错误希望不吝赐教。
MainActivity.java:
package com.example.dragzoom; import android.app.Activity; import android.graphics.Matrix; import android.graphics.PointF; import android.os.Bundle; import android.view.Menu; import android.view.MotionEvent; import android.view.View; import android.view.View.OnTouchListener; import android.widget.ImageView; /** * * @author Zls *实现图片的拖拽和缩放,给图片添加onClickListener */ public class MainActivity extends Activity { private ImageView image; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); image = (ImageView) this.findViewById(R.id.image); image.setOnTouchListener(new MyTouchListener()); } public final class MyTouchListener implements OnTouchListener { private int mode = 0; //三种模式表示触摸类型 private static final int DRAG = 1; private static final int ZOOM = 2; private PointF startpPoint = new PointF(), midPoint; //startPoint用来记录拖拽的时候记录第一次拖拽的点,midPoint让图片缩放的时候不移动 private float startDis, endDis; //两者之比表示缩放比例 private Matrix oldMatrix = new Matrix(), newMatrix = new Matrix(); //两个矩阵 @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction() & MotionEvent.ACTION_MASK) { case MotionEvent.ACTION_DOWN: //单手指按下表示为拖拽 mode = DRAG; oldMatrix.set(image.getImageMatrix()); startpPoint.set(event.getX(), event.getY()); break; case MotionEvent.ACTION_MOVE: // 手指在屏幕移动,该 事件会不断地触发 if (mode == DRAG) { float dx = event.getX() - startpPoint.x; // 得到在x轴的移动距离 float dy = event.getY() - startpPoint.y; // 得到在y轴的移动距离 newMatrix.set(oldMatrix); // 在没有进行移动之前的位置基础上进行移动 newMatrix.postTranslate(dx, dy); } else if (mode == ZOOM) { // 缩放 endDis = countDis(event); // 结束距离 if (endDis > 10f) { float scale = endDis / startDis; // 得到缩放倍数 newMatrix.set(oldMatrix); newMatrix.postScale(scale, scale, midPoint.x, //应用缩放 midPoint.y); } } break; case MotionEvent.ACTION_UP: //单手指或多手指抬起都恢复初始状态 case MotionEvent.ACTION_POINTER_UP: mode = 0; break; case MotionEvent.ACTION_POINTER_DOWN: //多手指按下 mode = ZOOM; startDis = countDis(event); if (startDis > 10f) { midPoint = midPoint(event); } break; } image.setImageMatrix(newMatrix); //让image显示最新的矩阵位置和大小,不执行则以上的触摸事件就无效鸟 return true; } } private static PointF midPoint(MotionEvent event) { float dx = (event.getX(1) + event.getX(0)) / 2; float dy = (event.getY(1) + event.getY(0)) / 2; return new PointF(dx, dy); } // private static float countDis(MotionEvent event) { float a = event.getX(1) - event.getX(0); float b = event.getY(1) - event.getY(0); float c = (float) Math.sqrt(a * a + b * b); return c; } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } }
layout_main.xml:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <ImageView android:id="@+id/image" android:layout_width="fill_parent" android:layout_height="fill_parent" android:scaleType="matrix" android:src="@drawable/luobing"/> </RelativeLayout>
ps:如果有错误希望不吝赐教。
- DragZoom.zip (1.4 MB)
- 下载次数: 0
发表评论
-
android的handler机制
2016-04-26 14:32 0本文原创,花了半天时间理解handler,把自己的理解贡献出 ... -
android studio 使用代码混淆
2016-03-13 22:46 947对于一些安全性要求比较高的应用,需要使用代码混淆,andro ... -
android图片选取与调用系统裁剪
2016-01-27 15:14 4859话不多说,直接给出一个工具类,想要的拿去 packa ... -
Url出现非法参数异常
2016-01-26 13:13 4364访问网址出现:illegal character in sc ... -
环信学习笔记(一)
2015-11-12 14:59 729小弟 从今天开始学习环信的sdk,主要是学习里 ... -
asmack搜索添加好友
2015-10-28 15:06 1380在做添加好友之间,必须要对xmpp的好友订阅有一定的了解, ... -
asmack登录冲突(多端登录冲突)处理
2015-10-20 18:08 4396功能:登录冲突; 效果:弹出对话框,您的账号在xxx ... -
asmack断线重连实现
2015-10-20 17:32 2713在以前的asmack版本中,断线重连是需要我们自己做的,原理 ... -
如何监听到asmack联系人资料变动
2015-09-28 17:01 1412开发中的点滴,排版有点丑,博客也不常写,有点丑,别嫌弃。实 ... -
Android Studio 引用jar和so 文件
2015-02-28 17:33 4854Android Studio 引用jar和so 文件 ... -
Android Studio中获取sha1证书指纹数据的方法
2015-02-28 17:00 5134Android Studio 获取sha1 开发软件 ... -
android获取手机信息
2015-02-05 13:48 1175/** * 获取android当前可用内存大小 ... -
How to use OKHTTP to make a post request
2015-01-30 11:57 1365How to use OKHTTP to make a ... -
Xmpp发送自定义IQ包
2015-01-05 10:34 4300Xmpp发送自定义的iq包 因为需要做扩 ... -
android保存联系人到通讯录
2014-12-31 12:36 1657Android保存联系人 上一篇文章讲了如何获取所 ... -
android获取联系人所有信息
2014-12-30 14:53 3494只要是开发和手机通讯路有关的应用,总要学会获取联系人信息, ... -
SQLiteBindOrColumnIndexOutOfRangeException
2014-12-24 18:22 1618SQLiteBindOrColumnIndexOutOfR ... -
openfire在eclipse中的环境搭建和编译详解
2014-11-19 21:31 2296因为项目需要去研究了openfire,刚开始按照视频教程 ... -
我理解的互联网思维
2014-11-06 17:02 487我对互联网思维的理解 几个月前,出于好奇与兴趣,我接 ... -
This message is already in use.的解决办法
2014-11-06 14:38 5003This message is already in us ...
相关推荐
本文将详细介绍如何使用 C# 在 Windows Forms 应用程序中实现图片的拖动和缩放功能。 #### 图片拖动功能实现 首先,我们来讨论如何实现图片的拖动功能。在 Windows Forms 中,`PictureBox` 控件通常用于显示图片。...
为了提供更好的用户体验,可以使用CSS3的`transition`属性实现平滑的缩放和移动效果。这将使得图片在移动或缩放时有平滑的动画过渡。 5. **响应式设计**: 如果是Web应用,还需要考虑响应式设计,确保图片在不同...
6. **坐标转换**: 由于Android的坐标系统与图片的坐标系统不同,我们需要将屏幕坐标转换为图片坐标,以便正确地处理图片的拖动和缩放。这通常涉及到`ImageView`的`getImageMatrix()`和`mapPointFromViewToImage()`...
在本文中,我们将深入探讨如何使用C#编程语言创建一个具备图片拖拽和缩放功能的工具。这个工具的核心功能是允许用户通过鼠标操作在界面上自由移动和调整图像的大小,提供直观的图像查看体验。 首先,我们需要了解C#...
在开发Windows应用程序时,我们经常需要实现一些交互功能,比如允许用户通过鼠标拖动和缩放图片。本篇文章将详细讲解如何在Visual Studio 2015中,利用.NET Framework 4.5.2,实现一个具有图片拖动和缩放功能的...
在这个组件的`js`文件中,我们将实现图片拖动和缩放的核心逻辑。 对于单指拖动效果,我们需要监听`touchstart`, `touchmove`和`touchend`这三个触摸事件。在`touchstart`事件中记录初始触摸点的位置,在`touchmove`...
C#控件PictureBox实现图像拖拽和缩放 摘要:本篇文章主要介绍了C#控件PictureBox实现图像拖拽和缩放的方法,通过使用PictureBox控件的MouseDown、MouseUp和MouseMove事件来实现图像的拖拽和缩放。同时,本篇文章还...
在这个名为"hammer 对图片的拖拽 缩放"的示例中,我们将探讨如何使用`hammer.js`来实现图片的动态操作。 `hammer.js`插件的主要目标是让开发者能够轻松地处理触摸事件,使得网页应用在移动设备上具有更自然、直观的...
LabVIEW 拖动图片和自动缩放图片,NI公司自己都没有做出来过,非常的好。
以上代码展示了基本的图片拖拽和缩放功能,你可以根据实际需求进行扩展,如添加边界检查以防止图片移出控件范围,或者增加平滑滚动效果等。 在提供的压缩包文件"ImageMoveZoom"中,可能包含了实现这些功能的源代码...
在Android平台上,实现多点触控、多张...综上所述,Android平台提供了丰富的API来支持多点触控、图片拖拽、缩放和旋转。通过理解这些API的工作原理并结合实际需求,开发者可以构建出功能强大且易于使用的图像交互应用。
jQuery库以其简洁API和丰富的功能,成为了JavaScript开发者的首选工具,而图片拖拽和缩放预览则是jQuery中的一个实用特性。 首先,我们要理解jQuery的核心概念。jQuery是一个轻量级的JavaScript库,它简化了HTML...
由于压缩包中删除了两个gif图片,这不会影响核心的图片缩放和拖动功能,因为这些图片可能只是示例或者用于演示效果。 综上所述,微信小程序实现图片缩放和拖动的关键在于监听触摸事件,动态计算图片的缩放比例和...
在本文中,我们将深入探讨如何使用C#编程语言与GDI+(图形设备接口)来创建一个自定义控件,该控件具有显示、拖动和缩放图片的功能,特别是支持BMP格式的图片。GDI+是.NET Framework中的一部分,提供了一套丰富的...
在IT行业中,图片的拖动与缩放是用户界面(UI)设计中常见的交互功能,尤其是在图像处理软件、网页和移动应用中。这个功能增强了用户体验,使得用户可以方便地查看和调整图片的位置和大小。接下来,我们将深入探讨...
在网页设计中,动态的图片展示效果可以提升用户体验,其中一种常见的技术是通过JavaScript实现鼠标滚动时图片等比例缩放。这个技术的核心在于利用JavaScript事件监听和CSS3变换功能,来实现图片随着页面滚动而优雅地...
在C#编程中,开发一个图像查看器应用时,常常需要实现用户可以通过鼠标进行图片的浏览、拖动和缩放功能。本项目“C#图片浏览支持鼠标拖动与滚轮缩放.rar”正是这样一个实例,它展示了如何利用C#语言来实现这些交互...