在android中拖放图像

前端之家收集整理的这篇文章主要介绍了在android中拖放图像前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在开发一个单词争夺游戏,允许用户将图像移动到图像..如果图像不匹配,那么它应该回到它拖动它的原始位置.我已经写了一个示例代码来移动它图像,但这里的问题是,如果我移动一个图像,相邻的图像也开始移动..这是示例代码.
  1. /** Touchmoveimage.java*/
  2. package com.examples.Touchmoveimage;
  3. import android.app.Activity;
  4. import android.content.Intent;
  5. import android.os.Bundle;
  6. import android.view.MotionEvent;
  7. import android.view.View;
  8. import android.view.View.OnTouchListener;
  9. import android.widget.ImageView;
  10. import android.widget.LinearLayout.LayoutParams;
  11. public class Touchmoveimage extends Activity implements OnTouchListener{
  12.  
  13. int windowwidth;
  14. int windowheight;
  15.  
  16. private LayoutParams layoutParams ;
  17. private LayoutParams layoutParams1 ;
  18. @Override
  19. public void onCreate(Bundle savedInstanceState) {
  20. super.onCreate(savedInstanceState);
  21. setContentView(R.layout.main);
  22.  
  23. windowwidth = getWindowManager().getDefaultDisplay().getWidth();
  24. windowheight = getWindowManager().getDefaultDisplay().getHeight();
  25.  
  26. ImageView ball= (ImageView)findViewById(R.id.ball);
  27. ball.setOnTouchListener(this);
  28.  
  29. ImageView ball1 = (ImageView)findViewById(R.id.ball1);
  30. ball1.setOnTouchListener(this);
  31.  
  32. }
  33. public boolean onTouch(View v,MotionEvent event) {
  34. switch(v.getId())
  35. {
  36. case R.id.ball:
  37. ImageView ball= (ImageView)findViewById(R.id.ball);
  38. layoutParams = (LayoutParams) ball.getLayoutParams();
  39. switch(event.getAction())
  40. {
  41. case MotionEvent.ACTION_DOWN:
  42. break;
  43. case MotionEvent.ACTION_MOVE:
  44. int x_cord = (int)event.getRawX();
  45. int y_cord = (int)event.getRawY();
  46.  
  47. if(x_cord>windowwidth){x_cord=windowwidth;}
  48. if(y_cord>windowheight){y_cord=windowheight;}
  49.  
  50. layoutParams.leftMargin = x_cord -25;
  51. layoutParams.topMargin = y_cord - 75;
  52.  
  53. ball.setLayoutParams(layoutParams);
  54. break;
  55. default : break;
  56. }
  57. case R.id.ball1:
  58. ImageView ball1= (ImageView)findViewById(R.id.ball1);
  59. layoutParams1 = (LayoutParams) ball1.getLayoutParams();
  60. switch(event.getAction())
  61. {
  62. case MotionEvent.ACTION_DOWN:
  63. break;
  64. case MotionEvent.ACTION_MOVE:
  65. int x_cord = (int)event.getRawX();
  66. int y_cord = (int)event.getRawY();
  67.  
  68. if(x_cord>windowwidth){x_cord=windowwidth;}
  69. if(y_cord>windowheight){y_cord=windowheight;}
  70.  
  71. layoutParams1.leftMargin = x_cord -25;
  72. layoutParams1.topMargin = y_cord - 75;
  73.  
  74. ball1.setLayoutParams(layoutParams1);
  75. break;
  76. default : break;
  77. }
  78. }
  79. return true;}
  80.  
  81. }
  1. <!-- main.xml -->
  2.  
  3. <?xml version="1.0" encoding="utf-8"?>
  4. <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
  5. android:orientation="vertical"
  6. android:layout_width="fill_parent"
  7. android:layout_height="fill_parent"
  8. >
  9. <ImageView
  10. android:layout_width="50sp"
  11. android:layout_height="50sp"
  12. android:id="@+id/ball"
  13. android:src="@drawable/ball">
  14. </ImageView>
  15.  
  16. <ImageView
  17. android:layout_y="30dip"
  18. android:layout_x="118dip"
  19. android:layout_width="50sp"
  20. android:layout_height="50sp"
  21. android:id="@+id/ball1"
  22. android:src="@drawable/ball1">
  23. </ImageView>
  24.  
  25. </LinearLayout>

任何人都帮助我.想要解决所有可能的事情……

解决方法

你需要确保事件发生在给定的球中.即使您在图像对象外部触摸,也会声明onTouch事件.因此,您可以做的是检查已阻止的ACTION_DOWN阶段,以确保触摸位于对象的边界内.然后你可以设置一个标志来告诉系统正在移动哪个球.我会让你做编码,但希望这会让你知道该怎么做.

猜你在找的Android相关文章