`
夏文权
  • 浏览: 245399 次
  • 性别: Icon_minigender_1
  • 来自: 贵州
社区版块
存档分类
最新评论

图片拖动功能实现

 
阅读更多

XML文件

 

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:orientation="vertical"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    >
<ImageView  
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:scaleType="matrix"
    android:id="@+id/imageView"
    android:src="@drawable/hd3"
    />
</LinearLayout>

 

主页面:MainActivity.java

 

package com.xiawenquan;

import android.app.Activity;
import android.graphics.Matrix;
import android.graphics.PointF;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.widget.ImageView;

public class MainActivity extends Activity {
    /** Called when the activity is first created. */
	private ImageView imageView;
	private PointF startPoint = null;
	private Matrix matrix = null;
	private Matrix currMatrix ;
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        startPoint = new PointF(); 
        matrix = new Matrix(); // 用于拖拉变换
        currMatrix = new Matrix(); // 用于拖拉变换
        
        
        imageView = (ImageView) findViewById(R.id.imageView);
        imageView.setOnTouchListener(new View.OnTouchListener() {
			
			@Override
			public boolean onTouch(View view, MotionEvent event) {
				switch (event.getAction() & MotionEvent.ACTION_MASK) {
				case MotionEvent.ACTION_DOWN://只有一个手指按下屏幕时触发的事件
					currMatrix.set(matrix); // 保存上一次的移动点
					startPoint.set(event.getX(),event.getY());//移动前,手指按下的位置
					
					
					break;
				case MotionEvent.ACTION_MOVE://手指在屏幕移动时触发的事件,该事件在移动过程不断被触发
					float mX = event.getX() - startPoint.x; // 移动点的X坐标
					float mY = event.getY() - startPoint.y;// 移动点的Y坐标
					matrix.set(currMatrix); // 保存当前变换的点
					matrix.postTranslate(mX, mY); // 移动到指定的点
					
					
					
					
					break;
					
				case MotionEvent.ACTION_POINTER_DOWN://如果已经有一个手指按下屏幕,后续再有手指按下屏幕,就会触发这个事件
					
					break;
					
				case MotionEvent.ACTION_UP://最后一个手指离开屏幕后触发的事件
					
					break;
				case MotionEvent.ACTION_POINTER_UP://有一个手指离开了屏幕,但还有手指在屏幕上,此时会触发该事件
					
					break;

				default:
					break;
				}
				
				imageView.setImageMatrix(matrix); // imageView在移动
				return true;
			}
		});
    }
}

 

分享到:
评论

相关推荐

    jquery实现简单图片的拖动

    这是一个简单的例子,展示了如何实现基本的图片拖动功能: ```javascript $(document).ready(function() { var draggableImage = $("#draggableImage"); var initialMouseX, initialMouseY, initialImagePos; ...

    jq+layui 实现图片拖拽上传功能

    接下来,我们需要编写JavaScript代码来实现拖拽功能。`js/upload.js`文件中,我们将监听拖放事件,处理图片预览和上传: ```javascript $(document).ready(function() { var uploadZone = $('.upload-zone'); var...

    Csharp处理图片拖动和缩放功能

    #### 图片拖动功能实现 首先,我们来讨论如何实现图片的拖动功能。在 Windows Forms 中,`PictureBox` 控件通常用于显示图片。为了使 `PictureBox` 可以被拖动,我们需要通过捕获鼠标事件来进行处理。 ##### 实现...

    仿微信朋友圈图片拖拽排序

    "仿微信朋友圈图片拖拽排序"是一个针对微信小程序的特色功能实现,它允许用户通过拖拽来调整朋友圈图片的顺序,同时还提供了图片的上传、删除以及相应的动画效果。这个功能在实际应用中能够极大地提升用户体验,使得...

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

    微信小程序的主要特点是实现快速连接线上与线下,用户可直接使用微信账号登录、分享,与微信生态链中的其他功能实现无缝连接。 微信小程序内拖动图片实现移动、放大、旋转的方法涉及的技术点包括:触摸事件处理、...

    基于vue图片拖拽放大缩小查看npm包

    1. **图片拖动(Draggable)**:通过监听鼠标或触摸事件,实现图片在画布上的自由移动。开发者可以通过设置数据绑定来控制图片的位置。 2. **图片缩放(Zoomable)**:提供双指缩放手势或者通过滚轮、键盘快捷键等...

    Android 图片可拖拽排序

    在Android开发中,实现“图片可拖拽排序”的功能是一项常见的需求,特别是在用户需要自定义顺序的场景下,如编辑个人资料、整理相册等。这个功能的核心在于创建一个能够响应用户触摸事件并允许元素自由移动的视图。...

    Qt-图片的拖拽功能以及多种功能的实现

    图片拖拽功能:我们实现了一个直观的图片拖拽功能,允许用户通过简单的拖拽操作来改变图片在界面上的位置。这项功能使得重新排列图片变得轻而易举,用户只需点击并拖动图片到期望的位置即可。 拖拽复制选项:为了...

    Android 微信朋友圈图片拖拽功能Demo

    这个"Android微信朋友圈图片拖拽功能Demo"就是一个实现此类功能的示例项目,名为"MyPhotoDragDemo"。 在Android中实现图片拖拽功能,主要涉及到以下几个关键知识点: 1. **触摸事件处理**:首先,我们需要监听用户...

    图片拖拽上传功能

    在IT领域,图片拖拽上传功能是用户交互设计中的一项重要技术,特别是在网页或应用程序中。这项功能允许用户通过简单的拖放操作将图片从本地计算机直接上传到网站或应用,提高了用户体验的便捷性和效率。接下来,我们...

    Java图片拖动功能的实现.rar

    在Java编程中,实现图片拖动功能是一项基本的GUI(图形用户界面)操作,它能够增强用户的交互体验。本文将详细讲解如何通过Java实现图片在窗体上的拖动功能,涉及的主要知识点包括Java AWT和Swing库中的鼠标事件处理...

    qml 拖拽图片

    本示例“qml 拖拽图片”聚焦于如何利用QML实现在一个区域内自由拖动图片的功能,这对于创建具有高度互动性的桌面或移动应用来说非常有用。以下将详细介绍如何使用QML实现这个功能。 首先,我们需要了解QML中的关键...

    WPF实现图片随意拖动

    在实现图片拖动功能时,最常用的是`Image`控件,它可以显示图像。我们要做的就是赋予这个`Image`控件拖放的能力。 1. **创建WPF项目** 首先,创建一个新的WPF应用程序项目。在Visual Studio中,选择“文件”&gt;...

    图片上传+拖动排序(vue2+elementUI+vuedraggable)

    在本文中,我们将深入探讨如何使用Vue2、ElementUI和vuedraggable库来实现一个功能完善的图片上传和拖动排序系统。这个系统允许用户上传图片,并在上传后通过拖拽来调整图片的顺序,同时支持查看原图和删除图片。 #...

    winform完美实现图片拖拽处理等

    在Windows Forms...总的来说,通过结合Winform的事件处理和C#的文件操作,我们可以轻松地实现图片的拖放功能,同时展示项目文件夹下的所有图片。这样的功能提升了用户体验,使用户能够直观地与应用程序进行交互。

    python实现了图片的打开,查看,缩放,拖拽及画笔功能

    《python实现一个图片查看器——可拖动、缩放和颜色画笔》配套源码,python实现了图片资源管理器选择,在tkcanvas的打开,查看,鼠标缩放,拖拽及画笔功能,可以用于图像处理编辑软件等项目的开发。

    类似地图拖拽功能

    在这里,我们讨论的核心是利用JavaScript和jQuery来创建一个自定义的、基于图片的地图拖拽功能。 首先,我们需要一个静态的背景地图,它是一张包含标注点的图片。这个图片可以是SVG或者PNG格式,根据项目需求选择。...

    实现了图片背景(换肤)、外观定制、排序、拖拽功能于一身的CListCtrl(包括内置的CHeaderCtrl)的可复用类及其Demo程序

    1、ListCtrl和HeaderCtrl支持共用位图底图,可以整个应用程序使用同一张完整底图图片,完美实现换肤等需要;...8、ListCtrl实现列表项拖拽功能,可以鼠标左键拖拽任意一项到某位置后松开,从而将该项插入到该位置处。

    PC端 四个角可控制,实现图片拖动,旋转,放大,拉伸(完美)

    在PC端开发中,实现图片的拖动、旋转、放大和拉伸功能是常见的需求,尤其是在图像编辑软件、在线设计工具或图片展示应用中。这个项目通过四个角的控制点,为用户提供了一种灵活的方式来操作图片,使得用户体验更加...

    若依(ruoyi)前后端分离版实现图片上传拖拽修改图片大小(公告页面)

    在实现拖拽功能时,我们可以使用HTML5的drag-and-drop API。这个API允许用户直接在网页上拖放元素,包括图片。通过监听dragstart、drag、dragend等事件,可以捕获拖放操作的开始、移动和结束,从而实现图片大小的...

Global site tag (gtag.js) - Google Analytics