0
내가 바로 뷰에있는 상자를 드래그 할 때마다 나는 안드로이드 드래그 앤 드롭 기능
사전
에 감사 할 것입니다 도움이 모든 종류의 여기 MainActivity의 내 소스 코드 안드로이드 응용 프로그램에서 초보자입니다. 자바package com.condorpos.demoapp2;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.DragEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.widget.LinearLayout;
public class MainActivity extends AppCompatActivity implements View.OnTouchListener, View.OnDragListener {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//set ontouch listener for box view
findViewById(R.id.box_view1).setOnTouchListener(this);
findViewById(R.id.box_view2).setOnTouchListener(this);
findViewById(R.id.box_view3).setOnTouchListener(this);
findViewById(R.id.box_view4).setOnTouchListener(this);
//set ondrag listener for right and left parent views
findViewById(R.id.left_view).setOnDragListener(this);
findViewById(R.id.right_view).setOnDragListener(this);
}
@Override
public boolean onDrag(View v, DragEvent event) {
//TODO Auto-generated method stub
if(event.getAction()==DragEvent.ACTION_DROP){
//we want to make sure it is dropped only to left and right parent view
View view = (View)event.getLocalState();
if(v.getId() == R.id.left_view || v.getId() == R.id.right_view){
ViewGroup source = (ViewGroup) view.getParent();
source.removeView(view);
LinearLayout target = (LinearLayout)v;
target.addView(view);
}
// make view visible as we set visibility to invisible while starting drag
view.setVisibility(View.INVISIBLE);
}
return true;
}
@Override
public boolean onTouch(View view, MotionEvent event) {
// TODO Auto-generated method stub
if(event.getAction() == MotionEvent.ACTION_DOWN){
View.DragShadowBuilder shadowBuilder = new View.DragShadowBuilder(view);
view.startDrag(null, shadowBuilder, view, 0);
view.setVisibility(View.INVISIBLE);
return true;
}
return false;
}
}
그리고 activity_main.xml에 대한
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="horizontal"
tools:context="com.condorpos.demoapp2.MainActivity">
<LinearLayout
android:id="@+id/left_view"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@android:color/darker_gray"
android:gravity="center_vertical"
android:orientation="vertical">
<ImageView
android:id="@+id/box_view1"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center_vertical|center_horizontal"
android:layout_margin="10dp"
android:background="@drawable/box_one"/>
<ImageView
android:id="@+id/box_view2"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_margin="10dp"
android:background="@drawable/box_two"/>
<ImageView
android:id="@+id/box_view3"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_margin="10dp"
android:background="@drawable/box_three"/>
<ImageView
android:id="@+id/box_view4"
android:layout_width="70dp"
android:layout_height="70dp"
android:layout_gravity="center_horizontal|center_vertical"
android:layout_margin="10dp"
android:background="@drawable/box_four"/>
</LinearLayout>
<LinearLayout
android:id="@+id/right_view"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_margin="10dp"
android:layout_weight="1"
android:background="@android:color/darker_gray"
android:gravity="center_vertical"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
목 anks 얘들 아. 액션까지 감지하거나 댓글 (액션 드롭) 가시성을 설정하는 표시 addView 후 때
[Android 드래그 앤 드롭 기능] (http://stackoverflow.com/questions/18725601/android-drag-and-drop-functionality)의 가능한 복제본 –