如何去实现一个具有幻象的拖拽效果?
所谓”幻象“就是当你按下去拖动一个View时,View本身不动,拖动的是这个View的复制品,当抬起时真正的View才显示到拖动的地方。
复制品很容易解决,2句代码就可以了:
v.setDrawingCacheEnabled(true);
Bitmap bitmap = Bitmap.createBitmap(v.getDrawingCache());
package com.ql.app;
import android.app.Activity;
import android.os.Bundle;
import android.util.Log;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.FrameLayout.LayoutParams;
/**
* 参考:http://techdroid.kbeanie.com/2010/04/simple-drag-n-drop-on-android.html
* @author admin
*
*/
public class App extends Activity implements OnTouchListener{
private final static int START_DRAGGING = 0;
private final static int STOP_DRAGGING = 1;
private Button btn;
private FrameLayout layout;
private int status;
private LayoutParams params;
private ImageView image;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
layout = (FrameLayout) findViewById(R.id.layout);
// layout.setOnTouchListener(this);
btn = (Button) findViewById(R.id.btn);
btn.setDrawingCacheEnabled(true);
btn.setOnTouchListener(this);
params = new LayoutParams(LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT);
}
@Override
public boolean onTouch(View view, MotionEvent me) {
switch (me.getAction()) {
case MotionEvent.ACTION_DOWN:
status = START_DRAGGING;
image = new ImageView(this);
image.setImageBitmap(btn.getDrawingCache());
layout.addView(image, params);
break;
case MotionEvent.ACTION_MOVE:
if (status == START_DRAGGING) {
image.setPadding((int) me.getRawX(), (int) me.getRawY(), 0, 0);
image.invalidate();
}
break;
case MotionEvent.ACTION_UP:
status = STOP_DRAGGING;
Log.i("Drag", "Stopped Dragging");
// layout.removeView(image);
break;
default:
break;
}
return false;
}
}
<?xml version="1.0" encoding="utf-8"?>
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/layout"
>
<Button android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/btn"
android:text="Drag Me"
/>
</FrameLayout>
Android Drag and Drop
http://www.vogella.com/tutorials/AndroidDragAndDrop/article.html
分享到:
相关推荐
本文将深入探讨如何使用jQuery实现简单的拖拽效果,让你的网页元素能够随心所欲地移动。 首先,拖拽效果的核心在于捕获鼠标事件,包括`mousedown`(鼠标按下)、`mousemove`(鼠标移动)和`mouseup`(鼠标释放)。...
在C#编程中,实现控件的拖动和拖拽效果是常见的需求,尤其是在开发桌面应用程序时。拖动效果和拖拽控件的功能使得用户能够更直观、方便地与界面进行交互。以下将详细讲解如何在C#中实现这一功能。 首先,我们需要...
在Android开发中,实现类似Zaker的拖拽效果是一项挑战性的任务,特别是在追求高性能和流畅度的同时。这个“android拖拽效果仿zaker 优化性能版本”项目旨在提供一种优化的解决方案,使得用户在浏览内容时能享受到...
在实现拖拽效果时,我们需要关注以下几个关键步骤: 1. **启用拖放源**:拖动操作的起点通常是应用中的一个控件,例如ListView、ListBox或其他自定义控件。在C#中,我们需要为这个控件启用拖放功能。这可以通过设置...
总之,“层的拖拽效果(带阴影效果)”是一个集交互性、视觉效果和数据管理于一体的复杂技术实现,它需要对前端开发和用户体验设计有深入的理解。通过这样的功能,开发者可以创建更生动、更具吸引力的用户界面。
"js制作简单拖拽效果.zip"这个压缩包文件包含了一个实现基本拖拽功能的示例,适用于网页开发中的各种场景,如布局调整、图片拖放等。下面我们将深入探讨JavaScript实现拖拽效果的关键知识点。 首先,我们需要理解...
在网页开发中,拖拽效果(Drag and Drop)是一种常见的用户交互方式,它允许用户通过鼠标或触摸设备移动页面上的元素。JavaScript(JS)作为网页的动态语言,提供了实现拖拽效果的强大功能。本主题主要关注如何使用...
简单的图片任意拖拽效果,任意拖拽到任意位置,代码简单 易懂
在Unity游戏引擎中,创建一个从用户界面(UI)中拖拽对象并实现平滑放置与拖动的效果是一项常见的交互设计。这个过程涉及到多个关键的技术点,包括UI元素的设置、碰撞检测、C#脚本编写以及物体的动态更新。下面我们将...
JS拖拽是指通过JavaScript实现的页面元素拖放效果,它可以允许用户通过鼠标操作页面上的元素,将其从一处拖动到另一处。在.NET环境下,虽然主要涉及后台编程,但可以通过与前端JS的配合实现拖拽功能。 JavaScript中...
总的来说,实现一个带有拖拽效果的GridView涉及到了Android UI交互设计、自定义视图组件、触摸事件处理、数据模型与视图的同步,以及可能的动画效果。这是一个相对复杂的任务,但通过理解并掌握这些知识点,可以构建...
在实现拖拽效果时,CSS主要用来设置层的位置和外观,而JavaScript则是实现拖动行为的关键。 1. CSS层设置: - `position`属性:要使元素可以被拖动,首先需要将其定位为绝对(absolute)或相对(relative)。这...
综上所述,要实现“gridview拖拽并且可以删除 带动画效果”,开发者需要掌握以下几个关键点: 1. GridView的基础知识,包括数据绑定和布局定制。 2. 自定义事件监听和触摸事件处理,实现拖放功能。 3. 数据源的管理...
总的来说,实现Android按钮的拖拽效果需要对触摸事件处理、自定义View和GridView有深入的理解。通过结合这些技术,我们可以创造出富有吸引力和互动性的用户界面,提升用户在使用应用时的满意度。
虽然目前的功能仅限于图标拖拽,但计划在未来进一步完善,添加页面切换等更多功能。 首先,我们需要理解安卓中的动画机制。安卓系统提供了多种动画实现方式,如属性动画(Property Animation)、视图动画(View ...
在本文中,我们将深入探讨如何使用Weex框架来创建一个具有卡片堆叠和拖拽效果的应用。Weex是由阿里巴巴开源的跨平台移动开发框架,它允许开发者使用一套代码来构建原生的Android、iOS和Web应用。Vue.js是Weex的基础...
"table实现列宽的拖动效果"是一个常见的需求,特别是在数据展示或者数据分析的应用中,用户可能需要自定义表格列的宽度以更好地查看和理解数据。这篇博客文章 "https://jifeng3321.iteye.com/blog/2403674" 提到的...
2. **事件监听**:为了实现拖动效果,我们需要监听用户的鼠标事件,如`mousedown`(鼠标按键按下)、`mousemove`(鼠标移动)和`mouseup`(鼠标按键释放)。当用户按下鼠标时,我们需要记录当前的坐标位置,以便在...
本教程将探讨如何创建一个简单的自定义View,实现类似于腾讯QQ中的红点拖动效果,但并不是完全复刻这一功能。我们将创建一个可拖动的点,当松开手指时,该点会自动返回到初始位置。 首先,我们需要创建一个新的Java...
`ListView item上下拖拽效果`是指用户可以将ListView中的某一项(item)上下移动,模拟拖动效果,同时还能支持删除item数据。这种功能常见于需要用户自由调整数据顺序或进行删除操作的场景,比如任务管理器、联系人...