Java 如何在android中检查拖放是否为空
我是android新手。现在我用三个按钮创建拖放功能。我检查了拖动按钮不应该为空,因为我必须从该按钮获取数据,而拖放按钮应该为空 如何将按钮移动到仅靠近按钮的位置?如果b1、b2、b3水平存在,则表示b1必须移动b2,但可以移动两侧,b3只能移动b2一侧。我的代码在这里。请指导我Java 如何在android中检查拖放是否为空,java,android,drag-and-drop,drag,onlongclicklistener,Java,Android,Drag And Drop,Drag,Onlongclicklistener,我是android新手。现在我用三个按钮创建拖放功能。我检查了拖动按钮不应该为空,因为我必须从该按钮获取数据,而拖放按钮应该为空 如何将按钮移动到仅靠近按钮的位置?如果b1、b2、b3水平存在,则表示b1必须移动b2,但可以移动两侧,b3只能移动b2一侧。我的代码在这里。请指导我 import android.content.ClipData; import android.graphics.Canvas; import android.graphics.Point; import androi
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;
}
};
}
最后,我找到了一种解决问题的方法,这对我很有好处:)
public类MainActivity扩展了AppCompatActivity{
按钮b1、b2、b3、b4、b5、b6、b7、b8、b9,按钮,拖动;
线性布局;
int move=0,moveleft=30;
文本视图m,ml;
公共无效播放(视图){
布局.设置可见性(视图.可见);
按钮。设置可见性(视图。不可见);
ArrayList编号=新的ArrayList();
Random randomGenerator=新的Random();
while(number.size()<8){
int random=randomGenerator.nextInt(8)+1;
如果(!number.contains(随机)){
数字。添加(随机);
}
}
b1.setText(Integer.toString(numbers.get(0));
b2.setText(Integer.toString(numbers.get(1));
b3.setText(Integer.toString(numbers.get(2));
b4.setText(Integer.toString(numbers.get(3));
b5.setText(Integer.toString(numbers.get(4));
setText(Integer.toString(numbers.get(5));
setText(Integer.toString(numbers.get(6));
setText(Integer.toString(numbers.get(7));
}
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
布局=(线性布局)findViewById(R.id.li);
b1=(按钮)findViewById(R.id.b1);
b2=(按钮)findViewById(R.id.b2);
b3=(按钮)findViewById(R.id.b3);
b4=(按钮)findViewById(R.id.b4);
b5=(按钮)findViewById(R.id.b5);
b6=(按钮)findViewById(R.id.b6);
b7=(按钮)findViewById(R.id.b7);
b8=(按钮)findViewById(R.id.b8);
b9=(按钮)findViewById(R.id.b9);
按钮=(按钮)findViewById(R.id.button);
m=(TextView)findViewById(R.id.move);
ml=(TextView)findViewById(R.id.mleft);
b1.setOnTouchListener(longClickListener);
b2.setOnTouchListener(longClickListener);
b3.setOnTouchListener(longClickListener);
b4.setOnTouchListener(longClickListener);
b5.setOnTouchListener(longClickListener);
b6.setOnTouchListener(longClickListener);
b7.setOnTouchListener(longClickListener);
b8.setOnTouchListener(longClickListener);
b9.setOnTouchListener(longClickListener);
}
OnTouchListener longClickListener=新建OnTouchListener(){
@凌驾
公共布尔onTouch(最终视图,MotionEvent){
DragShadow DragShadow=新的DragShadow(视图);
ClipData ClipData=ClipData.newPlainText(“,”);
view.startDrag(clipData,dragShadow,view,0);
Log.i(“info”,view.getTag().toString());
Log.i(“info”,b1.getTag().toString());
if(view.getTag().toString().matches(b1.getTag().toString())){
b2.setOnDragListener(dragListener);
b4.setOnDragListener(dragListener);
b1.setOnDragListener(空);
b3.setOnDragListener(空);
b5.setOnDragListener(空);
b6.setOnDragListener(空);
b7.setOnDragListener(空);
b8.setOnDragListener(空);
b9.setOnDragListener(空);
}else如果(view.getTag().toString().matches(b2.getTag().toString())){
b1.setOnDragListener(dragListener);
b3.setOnDragListener(dragListener);
b5.塞通特拉格监听器(dragListener);
b2.setOnDragListener(空);
b4.setOnDragListener(空);
b6.setOnDragListener(空);
b7.setOnDragListener(空);
b8.setOnDragListener(空);
b9.setOnDragListener(空);
}else如果(view.getTag().toString().matches(b3.getTag().toString())){
b2.setOnDragListener(dragListener);
b6.setOnDragListener(dragListener);
b1.setOnDragListener(空);
b3.setOnDragListener(空);
b4.setOnDragListener(空);
b5.setOnDragListener(空);
b7.setOnDragListener(空);
b8.setOnDragListener(空);
b9.setOnDragListener(空);
}else if(view.getTag().toString().matches(b4.getTag().toString())){
b1.setOnDragListener(dragListener);
b5.塞通特拉格监听器(dragListener);
b7.setOnDragListener(dragListener);
b2.setOnDragListener(空);
b3.setOnDragListener(空);
b4.setOnDragListener(空);
b6.setOnDragListener(空);
b8.setOnDragListener(空);
b9.setOnDragListener(空);
}else if(view.getTag().toString().matches(b5.getTag().toString())){
b2.setOnDragListener(dragListener);
b4.setOnDragListener(dragListener);
b6.setOnDragListener(dragListener);
b8.setOnDragListener(dragListener);
b1.setOnDragListener(空);
b3.setOnDragListener(空);
b5.setOnDragListener(空);
b7.setOnDragListener(空);
b9.setOnDragListener(空);
}else if(view.getTag().toString().matches(b6.getTag().toString())){
b3.setOnDragListener(dragListener);
b5.塞通特拉格监听器(dragListener);
b9.setOnDragListener(dragListener);
b1.setOnDragListener(空);
b2.setOnDragListener(空);
b4.setOnDragListener(空);
b6.setOnDragListener(空);
public class MainActivity extends AppCompatActivity {
Button b1,b2,b3,b4,b5,b6,b7,b8,b9,button,dragged;
LinearLayout layout;
int move=0,moveleft=30;
TextView m,ml;
public void play(View view){
layout.setVisibility(View.VISIBLE);
button.setVisibility(View.INVISIBLE);
ArrayList<Integer> numbers = new ArrayList<Integer>();
Random randomGenerator = new Random();
while (numbers.size() < 8) {
int random = randomGenerator .nextInt(8)+1;
if (!numbers.contains(random)) {
numbers.add(random);
}
}
b1.setText(Integer.toString(numbers.get(0)));
b2.setText(Integer.toString(numbers.get(1)));
b3.setText(Integer.toString(numbers.get(2)));
b4.setText(Integer.toString(numbers.get(3)));
b5.setText(Integer.toString(numbers.get(4)));
b6.setText(Integer.toString(numbers.get(5)));
b7.setText(Integer.toString(numbers.get(6)));
b8.setText(Integer.toString(numbers.get(7)));
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
layout = (LinearLayout) findViewById(R.id.li);
b1 = (Button) findViewById(R.id.b1);
b2 = (Button) findViewById(R.id.b2);
b3 = (Button) findViewById(R.id.b3);
b4 = (Button) findViewById(R.id.b4);
b5 = (Button) findViewById(R.id.b5);
b6 = (Button) findViewById(R.id.b6);
b7 = (Button) findViewById(R.id.b7);
b8 = (Button) findViewById(R.id.b8);
b9 = (Button) findViewById(R.id.b9);
button = (Button) findViewById(R.id.button);
m = (TextView) findViewById(R.id.move);
ml = (TextView) findViewById(R.id.mleft);
b1.setOnTouchListener(longClickListener);
b2.setOnTouchListener(longClickListener);
b3.setOnTouchListener(longClickListener);
b4.setOnTouchListener(longClickListener);
b5.setOnTouchListener(longClickListener);
b6.setOnTouchListener(longClickListener);
b7.setOnTouchListener(longClickListener);
b8.setOnTouchListener(longClickListener);
b9.setOnTouchListener(longClickListener);
}
OnTouchListener longClickListener =new OnTouchListener() {
@Override
public boolean onTouch(final View view, MotionEvent motionEvent) {
DragShadow dragShadow = new DragShadow(view);
ClipData clipData = ClipData.newPlainText("", "");
view.startDrag(clipData, dragShadow, view, 0);
Log.i("info", view.getTag().toString());
Log.i("info", b1.getTag().toString());
if (view.getTag().toString().matches(b1.getTag().toString())) {
b2.setOnDragListener(dragListener);
b4.setOnDragListener(dragListener);
b1.setOnDragListener(null);
b3.setOnDragListener(null);
b5.setOnDragListener(null);
b6.setOnDragListener(null);
b7.setOnDragListener(null);
b8.setOnDragListener(null);
b9.setOnDragListener(null);
} else if (view.getTag().toString().matches(b2.getTag().toString())) {
b1.setOnDragListener(dragListener);
b3.setOnDragListener(dragListener);
b5.setOnDragListener(dragListener);
b2.setOnDragListener(null);
b4.setOnDragListener(null);
b6.setOnDragListener(null);
b7.setOnDragListener(null);
b8.setOnDragListener(null);
b9.setOnDragListener(null);
} else if (view.getTag().toString().matches(b3.getTag().toString())) {
b2.setOnDragListener(dragListener);
b6.setOnDragListener(dragListener);
b1.setOnDragListener(null);
b3.setOnDragListener(null);
b4.setOnDragListener(null);
b5.setOnDragListener(null);
b7.setOnDragListener(null);
b8.setOnDragListener(null);
b9.setOnDragListener(null);
} else if (view.getTag().toString().matches(b4.getTag().toString())) {
b1.setOnDragListener(dragListener);
b5.setOnDragListener(dragListener);
b7.setOnDragListener(dragListener);
b2.setOnDragListener(null);
b3.setOnDragListener(null);
b4.setOnDragListener(null);
b6.setOnDragListener(null);
b8.setOnDragListener(null);
b9.setOnDragListener(null);
} else if (view.getTag().toString().matches(b5.getTag().toString())) {
b2.setOnDragListener(dragListener);
b4.setOnDragListener(dragListener);
b6.setOnDragListener(dragListener);
b8.setOnDragListener(dragListener);
b1.setOnDragListener(null);
b3.setOnDragListener(null);
b5.setOnDragListener(null);
b7.setOnDragListener(null);
b9.setOnDragListener(null);
} else if (view.getTag().toString().matches(b6.getTag().toString())) {
b3.setOnDragListener(dragListener);
b5.setOnDragListener(dragListener);
b9.setOnDragListener(dragListener);
b1.setOnDragListener(null);
b2.setOnDragListener(null);
b4.setOnDragListener(null);
b6.setOnDragListener(null);
b7.setOnDragListener(null);
b8.setOnDragListener(null);
} else if (view.getTag().toString().matches(b7.getTag().toString())) {
b4.setOnDragListener(dragListener);
b8.setOnDragListener(dragListener);
b1.setOnDragListener(null);
b2.setOnDragListener(null);
b3.setOnDragListener(null);
b5.setOnDragListener(null);
b6.setOnDragListener(null);
b7.setOnDragListener(null);
b9.setOnDragListener(null);
} else if (view.getTag().toString().matches(b8.getTag().toString())) {
b7.setOnDragListener(dragListener);
b5.setOnDragListener(dragListener);
b9.setOnDragListener(dragListener);
b1.setOnDragListener(null);
b2.setOnDragListener(null);
b3.setOnDragListener(null);
b4.setOnDragListener(null);
b6.setOnDragListener(null);
b8.setOnDragListener(null);
} else if (view.getTag().toString().matches(b9.getTag().toString())) {
b6.setOnDragListener(dragListener);
b8.setOnDragListener(dragListener);
b1.setOnDragListener(null);
b2.setOnDragListener(null);
b3.setOnDragListener(null);
b4.setOnDragListener(null);
b5.setOnDragListener(null);
b7.setOnDragListener(null);
b9.setOnDragListener(null);
}
return true;
}
};
private class DragShadow extends View.DragShadowBuilder{
ColorDrawable greyBox;
@SuppressWarnings("ResourceAsColor")
public DragShadow(View v){
super(v);
greyBox = new ColorDrawable(R.color.colorPrimaryDark);
}
@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("")) {
dragged = (Button) dragEvent.getLocalState();
CharSequence a = b.getText();
b.setText(dragged.getText());
dragged.setText(a);
move++;
moveleft--;
m.setText(Integer.toString(move));
ml.setText(Integer.toString(moveleft));
condition();
} else{
Toast.makeText(getApplicationContext(),"inserting button should be empty",Toast.LENGTH_SHORT).show();
}
break;
}
return true;
}
};
public void condition(){
if(b1.getText().toString().matches("1")
&&b2.getText().toString().matches("2")
&&b3.getText().toString().matches("3")
&&b4.getText().toString().matches("4")
&&b5.getText().toString().matches("5")
&&b6.getText().toString().matches("6")
&&b7.getText().toString().matches("7")
&&b8.getText().toString().matches("8")){
Toast toast = Toast.makeText(getApplicationContext(),"GAME OVER",Toast.LENGTH_LONG);
ViewGroup group = (ViewGroup) toast.getView();
TextView messageTextView = (TextView) group.getChildAt(0);
messageTextView.setTextSize(25);
toast.show();
}
}}