gpt4 book ai didi

android - 在android中拖放图像

转载 作者:塔克拉玛干 更新时间:2023-11-02 19:00:54 26 4
gpt4 key购买 nike

我正在开发一个单词拼写游戏,它允许用户将图像移动到图像..如果图像不匹配,那么它应该从被拖动的地方回到原来的位置。我已经写了一个示例代码移动图像,但这里的问题是如果我移动一个图像,相邻的图像也会开始移动。这是示例代码。

 /** 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/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com