`

实现图片的拖拽效果

阅读更多

最近项目里有个模块需要实现拖拽,分析了,发现在不同层内拖拽效果很难实现,要么就是效果体验性很一般。

 

好不容易用了障眼法才解决,呵呵,分享下。

 

package com.nico;

import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.Gravity;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnTouchListener;
import android.widget.ImageView;

public class DragActivity extends Activity {
	ImageView imgview;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		final ImageView img = (ImageView) findViewById(R.id.img);

		final WindowManager wm = this.getWindowManager();
		final WindowManager.LayoutParams wlayout = new WindowManager.LayoutParams();
		wlayout.gravity = Gravity.TOP;

		wlayout.x = 0;
		wlayout.y = 0;

		wlayout.height = WindowManager.LayoutParams.WRAP_CONTENT;
		wlayout.width = WindowManager.LayoutParams.WRAP_CONTENT;
		wlayout.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
				| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
				| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
				| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;
		wlayout.format = PixelFormat.TRANSLUCENT;
		wlayout.windowAnimations = 0;

		img.setOnTouchListener(new OnTouchListener() {

			@Override
			public boolean onTouch(View v, MotionEvent event) {
				int act = event.getAction();
				int rawx = (int) event.getRawX()-v.getRight()-v.getWidth();
				int rawy = (int) event.getRawY();
				wlayout.x = rawx;
				wlayout.y = rawy;

				switch (act) {
				case MotionEvent.ACTION_DOWN:

					ImageView newimg = new ImageView(DragActivity.this);
					img.setDrawingCacheEnabled(true);
					Bitmap bt = img.getDrawingCache();
					newimg.setImageBitmap(bt);
					imgview = newimg;
					wm.addView(imgview, wlayout);

					imgview.setVisibility(View.VISIBLE);

					break;
				case MotionEvent.ACTION_MOVE:
//					wlayout.x = rawx;
//					wlayout.y = rawy;
					wm.updateViewLayout(imgview, wlayout);
					break;
				case MotionEvent.ACTION_UP:
					wm.removeView(imgview);
					if (imgview != null) {
						imgview.destroyDrawingCache();
						imgview = null;

					}
					break;
				}

				return true;
			}
		});

	}
}

 

 

分享到:
评论
2 楼 hellorheaven 2010-12-06  
antoon.nee 写道
楼主,你好。
这里为什么要用按位或运算呢?
wlayout.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

还有图片只能在竖直方向移动,水平方向为什么不能呢?



图片可以随意移动的吧。
1 楼 antoon.nee 2010-11-29  
楼主,你好。
这里为什么要用按位或运算呢?
wlayout.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON
| WindowManager.LayoutParams.FLAG_LAYOUT_IN_SCREEN;

还有图片只能在竖直方向移动,水平方向为什么不能呢?

相关推荐

    android 图片拖拽效果

    在Android开发中,实现图片拖拽效果是一种常见的交互设计,它可以增强用户对应用的体验感。这个"android 图片拖拽效果"项目提供了一个详细实现图片拖动功能的源码,使用者可以将其直接导入到自己的Android项目中进行...

    Android开发之google源码——图片拖拽效果的实现

    在Android应用开发中,实现图片拖拽效果是一个常见的需求,特别是在设计交互丰富的用户界面时。本文将基于提供的“Android开发之google源码——图片拖拽效果的实现”资源,深入探讨如何在Android平台上创建这样的...

    js图片拖拽效果制作列表图片拖拽排序代码

    在JavaScript编程中,实现图片拖拽效果以及列表图片的拖拽排序是一项常见且实用的技术。这一功能常用于创建用户友好的交互式应用,比如在线相册、任务管理器或者自定义布局的界面。本篇文章将深入探讨如何使用...

    js css3实现图片拖拽效果

    本文实例为大家分享了css3实现图片拖拽效果的具体代码,供大家参考,具体内容如下 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title></title> <style type=...

    Android图片拖拽效果代码.zip

    在Android开发中,实现图片拖拽效果是一项常见的需求,它能为用户带来更直观和交互式的体验。这个压缩包文件“Android图片拖拽效果代码.zip”包含了一个示例项目,展示了如何在Android应用中实现这一功能。下面我们...

    实现图片拖拽及排序效果

    实现图片拖拽,图片排序功能

    JQuery实现图片拖拽替换效果

    要实现图片拖拽替换效果,我们需要遵循以下步骤: 1. **引入JQuery库**:确保在HTML文件中引入JQuery库。通常,我们可以通过CDN链接来快速引入: ```html ...

    js中实现拖拽特效,文件图片可以随意拖动

    在JavaScript中实现拖拽特效是一项常见的交互设计技术,它可以增强用户在网页上的体验,使得文件或图片等元素能够像在桌面环境中一样自由移动。在这个场景中,我们将关注如何使用JavaScript来实现这一功能,同时结合...

    微信小程序实现图片拖拽代码与讲解视频

    在这个主题中,“微信小程序实现图片拖拽代码与讲解视频”是一个关于如何在微信小程序中实现图片拖放功能的教学资源。 在微信小程序中实现图片拖拽功能,主要涉及以下几个核心知识点: 1. **事件监听**:微信小...

    android图片拖拽

    在Android开发中,实现图片拖拽效果是一种常见的交互设计,它可以增强用户操作的直观性和趣味性。本示例“DragDemo”将展示如何在Android应用中实现这一功能。以下是实现图片拖拽效果的关键知识点和步骤: 1. **...

    Qt自定义图形实现拖拽效果

    本文实例为大家分享了Qt自定义图形实现拖拽效果的具体代码,供大家参考,具体内容如下 在这里自定义图形是通过QPaintEvent事件绘画的图形,也可以通过自定义控件的方式添加到qt中。 首先定义类来自定义图形,这里...

    jquery图片拖拽实例(支持鼠标双击事件拖拽图片)效果代码

    在本实例中,我们将深入探讨如何使用jQuery库实现一个图片拖拽功能,同时支持鼠标双击事件来开启拖拽操作。jQuery是一个强大的JavaScript库,它简化了DOM操作、事件处理和动画制作等任务,使得创建交互式的网页变得...

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

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

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

    实现图片拖拽修改大小,需要借助Vue.js的响应式数据绑定和组件化特性,以及一些额外的库或插件。 在图片上传方面,通常会使用File API和FormData对象,它们是HTML5引入的特性,用于处理用户选择的本地文件。用户...

    Android-ImageNice9Layout仿Nice首页图片列表9图样式并实现拖拽效果

    在实现图片列表时,RecyclerView可以有效管理视图复用,提高性能。开发者需要理解LayoutManager、Adapter和ViewHolder的概念。 5. **触摸事件处理**: 实现拖拽效果涉及到触摸事件的处理。开发者需要监听...

    实现canvas 图片拖拽旋转移动 点击转成base64

    使用hammer.js监听触控时产生的位移,并用Jcanvas.js画出来,从而实现在canvas画布内进行手势的拖拽 旋转 移动 缩放功能.点击按钮获取画布内的base64,并显示. 测试时请放在tomcat内,并手机访问. 不足:canvas加载...

    图片拖拽效果

    实现图片拖拽的核心是利用jQuery的事件处理机制,特别是`mousedown`、`mousemove`和`mouseup`这三个与鼠标操作相关的事件。当用户按下鼠标按钮(`mousedown`)时,我们记录下当前的鼠标位置和图片的位置。接着,在...

    jquery实现九宫格图片拖动效果

    此外,如果要实现图片的排序功能,还需要记录每个图片的原始顺序,并在拖放结束后更新顺序。 总结来说,实现jQuery九宫格图片拖动效果涉及以下几个关键步骤: 1. 创建HTML结构和CSS样式。 2. 引入jQuery库并绑定...

    C#联合halcon利用halcon控件实现鼠标拖拽放大缩小图片

    在本文中,我们将深入探讨如何使用C#编程语言与HALCON机器视觉库相结合,通过Halcon控件实现在Windows应用程序中实现鼠标拖拽放大、缩小图片的功能。HALCON是一款强大的机器视觉软件,提供了丰富的图像处理功能,而...

Global site tag (gtag.js) - Google Analytics