2013-05-19 44 views
0

我对Android开发比较陌生。用于ImageView的onTouch移动?

但我想知道是否有可能移动这些图像,以便他们可以互相交换网格。因为它是我尝试实施的棋盘游戏。

这是什么样子:http://i.imgur.com/2shAuGd.png

的图像阵列代码:

private Integer[] mThumbIds = { 
     R.drawable.blank, R.drawable.blank, R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.blank, R.drawable.blank, 
     R.drawable.blank, R.drawable.blank, R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.blank, R.drawable.blank, 
     R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.peg, 
     R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.empty, R.drawable.peg, R.drawable.peg, R.drawable.peg, 
     R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.peg, 
     R.drawable.blank, R.drawable.blank, R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.blank, R.drawable.blank, 
     R.drawable.blank, R.drawable.blank, R.drawable.peg, R.drawable.peg, R.drawable.peg, R.drawable.blank, R.drawable.blank, 
     }; 

XML:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:orientation="vertical" > 

<GridView 
    android:id="@+id/gridview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    android:layout_marginTop="40dp" 
    android:columnWidth="50dp" 
    android:numColumns="7" 
    android:verticalSpacing="2dp" 
    android:horizontalSpacing="2dp" 
    android:stretchMode="columnWidth" 
    android:gravity="center" /> 

</LinearLayout> 
+0

您是否试图为您的游戏实施拖放操作? –

+0

不,你按一个挂钩选择它,然后按空的空间在那里移动它。你不需要拖动它。 – user1902535

+0

你应该看到拖放。 http://www.vogella.com/articles/AndroidDragAndDrop/article.html – Raghunandan

回答

1

如果您不需要拖放这个应该很简单。

private View firstClicked = null; 

private OnClickListener swapImages = new OnClickListener() { 

    @Override 
    public void onClick(View v) { 
     if(firstClicked != null){ 
      LayoutParams p1 = firstClicked.getLayoutParams(); 
      LayoutParams p2 = v.getLayoutParams(); 
      v.setLayoutParams(p1); 
      firstClicked.setLayoutParams(p2); 
          firstClicked = null; 
     } 
     else 
      firstClicked = v; 
    } 
}; 

这样你只需交换他们的位置,而不是他们内部的图像。

编辑:但是如果这干扰你的游戏逻辑,你只需要交换而不是布局参数,你只需交换他们的图像。

编辑:此代码交换你的绘图资源,你需要创建自己的逻辑

package com.example.stackoverflow; 
import android.os.Bundle; 
import android.view.View; 
import android.widget.AdapterView; 
import android.widget.AdapterView.OnItemClickListener; 
import android.widget.GridView; 
import android.widget.ImageView; 
import android.widget.Toast; 
import android.app.Activity; 
import android.graphics.drawable.Drawable; 


public class Game extends Activity { 

private ImageView firstClicked = null; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
      super.onCreate(savedInstanceState); 
      setContentView(R.layout.game); 

      GridView gridview = (GridView) findViewById(R.id.gridview); 
     gridview.setAdapter(new ImageAdapter(this)); 

     gridview.setOnItemClickListener(new OnItemClickListener() { 
      public void onItemClick(AdapterView<?> parent, View v, int position, long id) { 
       Toast.makeText(Game.this, "" + position, Toast.LENGTH_SHORT).show(); 
       if(firstClicked != null){ 
        ImageView v2 = (ImageView)v; 
        Drawable d2 = v2.getDrawable(); 
        Drawable d1 = firstClicked.getDrawable(); 
        v2.setImageDrawable(d1); 
        firstClicked.setImageDrawable(d2); 
        firstClicked = null; 
       } 
       else { 
        firstClicked = (ImageView)v; 
       } 
      } 

     }); 
    } 
} 

希望这有助于和享受你的工作。

+0

这会放在ImageAdapter中吗? – user1902535

+0

你是如何解决你的onClickEvent图像的。 –

+0

它没有为我工作。这些是我的文件:http://pastebin.com/x2yattZv ... http://pastebin.com/Q2jiRXUS – user1902535