android - 在android中拖放图像

标签 android image drag-and-drop ontouchlistener

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

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

相关文章:

android - 我可以在 Appcompat-v7 中使用没有 Actionbar 的 Activity 而不是 ActionbarActivity 吗?

html - 如何使用 jquery 在 <img> 中禁用然后重新启用 onclick 事件

图像缩略图上的 CSS 边框会影响页面上的所有图像

css - 是否可以将图像置于 overflow hidden 的包装内?

javascript - 如何将项目放到 react-dnd 中的空部分?

android - 线程中的蓝牙通信或 Android 中的服务?

android - 如何获得背景失焦(模糊)的 Alertdialog

php - 如何使用 PHP 在我的服务器上验证 Android 生成的 token ?

jquery - 如何使用 jQuery UI

wpf - 在 WPF 中通过拖放使用继承时出现问题