Android拖拽教程
原文地址
开发环境:
Eclipse 3.7(Indigo) 、Java 1.6 和 Android 4.0(Ice Cream Sandwich) 前言:
Android 4.0 开始支持视图(Views)的拖拽。你需要在视图(View)上注册一个监听器(Listener),比如 OnTouchListener 或者 LongClickListener,并且需要定义一个视图(View)作为拖拽的目标视图对象,比如 拖放区(drop zones)。下面我们通过两段代码来学习一下。
第一段代码我们定义一个视图,你可以拖拽该视图,我们在该视图上使用setOnTouchListener方法注册了一个OnTouchListener事件。
1
//
Assign the touch listener to your view which you want to move
2 findViewById(R.id.myimage1).setOnTouchListener(
new MyTouchListener());
3
4
//
This defines your touch listener
5
private
final
class MyTouchListener
implements OnTouchListener {
6
public
boolean onTouch(View view, MotionEvent motionEvent) {
7
if (motionEvent.getAction() == MotionEvent.ACTION_DOWN) {
8 ClipData data = ClipData.newPlainText("", "");
9 DragShadowBuilder shadowBuilder =
new View.DragShadowBuilder(view);
10 view.startDrag(data, shadowBuilder, view, 0);
11 view.setVisibility(View.INVISIBLE);
12
return
true;
13 }
else {
14
return
false;
15 }
16 }
17 }
上面的第 8 行代码,我们构造了一个 ClipData 对象,可以使用该对象来存放数据,并且该对象可以被处于拖放区(drop zones)的视图接收,即 ClipData 可用于视图拖拽前后数据的传递。第 9 行代码,DragShadowBuilder 允许你指定拖拽操作的效果,通常你直接在视图上进行拖拽操作。
第二段代码我们将定义一个拖放区(drag zone),你可以将定义好的视图拖拽到该视图上,我们在该拖放区视图上通过 setOnDragListener() 方法注册了一个 OnDragListener 监听器,在 OnDragListener 监听器中你可以定义相关的事件处理方法。
教程实践
1. 创建一个新的 Android Project
-> project name: "de.vogella.android.draganddrop"
-> create activity: "DragActivity"
2. 在项目的res目录下创建一个 "drawable" 文件夹,在该文件夹中创建文件 "shape.xml"
<?
xml version="1.0" encoding="UTF-8"
?>
<
shape
xmlns:android
="http://schemas.android.com/apk/res/android"
android:shape
="rectangle"
>
<
stroke
android:width
="2dp"
android:color
="#FFFFFFFF"
/>
<
gradient
android:angle
="225"
android:endColor
="#DD2ECCFA"
android:startColor
="#DD000000"
/>
<
corners
android:bottomLeftRadius
="7dp"
android:bottomRightRadius
="7dp"
android:topLeftRadius
="7dp"
android:topRightRadius
="7dp"
/>
</
shape
>
3. 在 "drawable" 文件夹中创建文件 "shape_droptarget.xml"
<?
xml version="1.0" encoding="UTF-8"
?>
<
shape
xmlns:android
="http://schemas.android.com/apk/res/android"
android:shape
="rectangle"
>
<
stroke
android:width
="2dp"
android:color
="#FFFF0000"
/>
<
gradient
android:angle
="225"
android:endColor
="#DD2ECCFA"
android:startColor
="#DD000000"
/>
<
corners
android:bottomLeftRadius
="7dp"
android:bottomRightRadius
="7dp"
android:topLeftRadius
="7dp"
android:topRightRadius
="7dp"
/>
</
shape
>
4. 按照下面代码修改"res/layout/main.xml"文件
5. 修改 Activity文件
6. 启动你创建的Activity,你就可以拖拽 ImageViews 到另一个容器里面。
![]()
参考链接:
http://www.vogella.com/articles/AndroidDragAndDrop/article.html
本文转自Work Hard Work Smart博客园博客,原文链接:http://www.cnblogs.com/linlf03/archive/2013/04/02/2995075.html,如需转载请自行联系原作者