我正在开发一个单词拼写游戏,它允许用户将图像移动到图像..如果图像不匹配,那么它应该从被拖动的地方回到原来的位置。我已经写了一个示例代码移动图像,但这里的问题是如果我移动一个图像,相邻的图像也会开始移动。这是示例代码。
/** Touchmoveimage.java*/
package com.examples.Touchmoveimage;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnTouchListener;
import android.widget.ImageView;
import android.widget.LinearLayout.LayoutParams;
public class Touchmoveimage extends Activity implements OnTouchListener{
int windowwidth;
int windowheight;
private LayoutParams layoutParams ;
private LayoutParams layoutParams1 ;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
windowwidth = getWindowManager().getDefaultDisplay().getWidth();
windowheight = getWindowManager().getDefaultDisplay().getHeight();
ImageView ball= (ImageView)findViewById(R.id.ball);
ball.setOnTouchListener(this);
ImageView ball1 = (ImageView)findViewById(R.id.ball1);
ball1.setOnTouchListener(this);
}
public boolean onTouch(View v,MotionEvent event) {
switch(v.getId())
{
case R.id.ball:
ImageView ball= (ImageView)findViewById(R.id.ball);
layoutParams = (LayoutParams) ball.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
int x_cord = (int)event.getRawX();
int y_cord = (int)event.getRawY();
if(x_cord>windowwidth){x_cord=windowwidth;}
if(y_cord>windowheight){y_cord=windowheight;}
layoutParams.leftMargin = x_cord -25;
layoutParams.topMargin = y_cord - 75;
ball.setLayoutParams(layoutParams);
break;
default : break;
}
case R.id.ball1:
ImageView ball1= (ImageView)findViewById(R.id.ball1);
layoutParams1 = (LayoutParams) ball1.getLayoutParams();
switch(event.getAction())
{
case MotionEvent.ACTION_DOWN:
break;
case MotionEvent.ACTION_MOVE:
int x_cord = (int)event.getRawX();
int y_cord = (int)event.getRawY();
if(x_cord>windowwidth){x_cord=windowwidth;}
if(y_cord>windowheight){y_cord=windowheight;}
layoutParams1.leftMargin = x_cord -25;
layoutParams1.topMargin = y_cord - 75;
ball1.setLayoutParams(layoutParams1);
break;
default : break;
}
}
return true;}
}
<!-- main.xml -->
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<ImageView
android:layout_width="50sp"
android:layout_height="50sp"
android:id="@+id/ball"
android:src="@drawable/ball">
</ImageView>
<ImageView
android:layout_y="30dip"
android:layout_x="118dip"
android:layout_width="50sp"
android:layout_height="50sp"
android:id="@+id/ball1"
android:src="@drawable/ball1">
</ImageView>
</LinearLayout>
任何人请帮助我..尝试所有可能的事情来解决它..
最佳答案
您需要确保事件正在给定的球中发生。即使您在图像对象之外触摸,也会声明 onTouch 事件。所以你可以做的是检查你已经阻止的 ACTION_DOWN 阶段,以确保触摸在对象的边界内。然后你可以设置一个标志来告诉系统哪个球正在移动。我会让您编写代码,但希望这能让您了解要做什么。
关于android - 在android中拖放图像,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4524288/