android drag and drag用法
时间: 2024-01-11 12:02:32 浏览: 108
Android Drag and Drop 是 Android 中的一个功能,可以让用户轻松地拖放对象和其他UI元素。 这个功能可以在许多应用程序中使用,例如拖放图像、文件、文本等等。如果你想要学习如何使用 Drag and Drop 功能,可以查阅 Android 的官方文档。这里有一个示例代码可以供参考:
首先在 XML 布局文件中添加两个视图,一个用作拖动源,另一个用作目标:
```
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent">
<TextView
android:id="@+id/source"
android:text="Drag Me"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="#FFCC33"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:layout_margin="10dp"
android:longClickable="true"
android:tag="Dragabble Text View"/>
<TextView
android:id="@+id/target"
android:text="Drop Here"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:padding="10dp"
android:background="#333333"
android:gravity="center"
android:textColor="#FFFFFF"
android:textSize="20sp"
android:layout_margin="10dp"
android:tag="Droppable Text View"/>
</LinearLayout>
```
然后在 Activity 中实现 drag and drop 的逻辑:
```
public class MainActivity extends Activity implements View.OnLongClickListener, View.OnDragListener {
private TextView sourceTextView;
private TextView targetTextView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
sourceTextView = (TextView) findViewById(R.id.source);
sourceTextView.setOnLongClickListener(this);
targetTextView = (TextView) findViewById(R.id.target);
targetTextView.setOnDragListener(this);
}
@Override
public boolean onLongClick(View v) {
ClipData.Item item = new ClipData.Item((CharSequence) v.getTag());
String[] mimeTypes = { ClipDescription.MIMETYPE_TEXT_PLAIN };
ClipData data = new ClipData(v.getTag().toString(), mimeTypes, item);
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(v);
v.startDrag(data, shadowBuilder, v, 0);
return true;
}
@Override
public boolean onDrag(View v, DragEvent event) {
int action = event.getAction();
switch (action) {
case DragEvent.ACTION_DRAG_STARTED:
// do nothing
break;
case DragEvent.ACTION_DRAG_ENTERED:
// change the target view background color
v.setBackgroundColor(Color.YELLOW);
break;
case DragEvent.ACTION_DRAG_EXITED:
// reset the target view background color
v.setBackgroundColor(Color.GRAY);
break;
case DragEvent.ACTION_DROP:
// handle the dragged data
ClipData.Item item = event.getClipData().getItemAt(0);
String dragData = item.getText().toString();
targetTextView.setText(dragData);
break;
case DragEvent.ACTION_DRAG_ENDED:
// reset the source and target view background color
sourceTextView.setBackgroundColor(Color.YELLOW);
targetTextView.setBackgroundColor(Color.GRAY);
break;
default:
break;
}
return true;
}
}
```
这个代码演示了一个简单的拖放操作。当用户长按源 TextView 时,他/她可以拖动它到目标 TextView 上面。当放手时,目标视图会显示源视图上的文本。在本例中,通过实现 OnLongClickListener 和 OnDragListener 接口来处理拖放操作。如果你需要更高级的 Drag and Drop 操作,可以查阅 Android 的官方文档。
阅读全文