2
私はandroid.nowに新しいです。私は3つのボタンを使用してドラッグアンドドロップ機能を作成しています。私はそのボタンからデータを取得してボタンをドロップする必要があるので空にしてはいけませんドラッグボタンを確認するために空をする必要があります。ドラッグアンドドロップをチェックする方法は空ですかアンドロイドではありません
ボタンをボタンの近くに移動するにはどうすればよいですか?もしb1、b2、b3が水平に存在するならば、b1はb2を動かなければならないが、両側を動かすことができる、b3はb2だけ動かなければならないことを意味する。最後に
import android.content.ClipData;
import android.graphics.Canvas;
import android.graphics.Point;
import android.graphics.drawable.ColorDrawable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.DragEvent;
import android.view.View;
import android.view.View.OnDragListener;
import android.view.View.OnLongClickListener;
import android.widget.Button;
public class MainActivity extends AppCompatActivity {
Button b1,b2,b3;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b1 = (Button) findViewById(R.id.b1);
b2 = (Button) findViewById(R.id.b2);
b3 = (Button) findViewById(R.id.b3);
findViewById(R.id.b1).setOnLongClickListener(longClickListener);
findViewById(R.id.b2).setOnLongClickListener(longClickListener);
findViewById(R.id.b3).setOnLongClickListener(longClickListener);
findViewById(R.id.b1).setOnDragListener(dragListener);
findViewById(R.id.b2).setOnDragListener(dragListener);
findViewById(R.id.b3).setOnDragListener(dragListener);
}
OnLongClickListener longClickListener = new OnLongClickListener() {
@Override
public boolean onLongClick(View view) {
DragShadow dragShadow = new DragShadow(view);
ClipData clipData = ClipData.newPlainText("","");
view.startDrag(clipData, dragShadow, view, 0);
return true;
}
};
private class DragShadow extends View.DragShadowBuilder{
ColorDrawable greyBox;
public DragShadow(View v){
super(v);
greyBox = new ColorDrawable(R.color.button_material_light);
}
@Override
public void onDrawShadow(Canvas canvas) {
greyBox.draw(canvas);
}
@Override
public void onProvideShadowMetrics(Point shadowSize, Point
shadowTouchPoint) {
View v = getView();
int height = (int) v.getHeight();
int width = (int) v.getWidth();
greyBox.setBounds(0,0,width,height);
shadowSize.set(width,height);
shadowTouchPoint.set((int) width/2,(int) height/2);
}
}
OnDragListener dragListener = new OnDragListener() {
@Override
public boolean onDrag(View view, DragEvent dragEvent) {
int dEvent = dragEvent.getAction();
switch (dEvent) {
case DragEvent.ACTION_DRAG_ENTERED:
Log.i("Drag Event", "Entered");
break;
case DragEvent.ACTION_DRAG_EXITED:
Log.i("Drag Event", "Exited");
break;
case DragEvent.ACTION_DROP:
Button b = (Button) view;
if (b.getText().toString().matches("")) {
Button dragged = (Button) dragEvent.getLocalState();
CharSequence a = b.getText();
b.setText(dragged.getText());
dragged.setText(a);
} else{
Toast.makeText(getApplicationContext(),"inserting button should be empty",Toast.LENGTH_SHORT).show();
}
break;
}
return true;
}
};
}