0

我正在制作一个需要在网格视图中交换图像的应用程序。这是代码......我怎么能实现交换:

活动

public class GameActivity extends Activity
    implements OnTouchListener  
{

     @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    //Intent intent = getIntent();
    setContentView(R.layout.layout_game);

    //create grid view
    splitImage(); 
    GridView gridView = new GridView(this);
    gridView = (GridView)findViewById(R.id.grid_view);   
    final ImageAdapter images = new ImageAdapter(this,chunkedImages);
    final GridView gV = gridView;
    gridView.setAdapter(images);
    gridView.setOnTouchListener(this);

}

public boolean onTouch(View v, MotionEvent me) {

    switch(me.getAction())
    {

    case MotionEvent.ACTION_DOWN :

        Toast.makeText(GameActivity.this, "down ", Toast.LENGTH_SHORT).show();
        break;
    case MotionEvent.ACTION_UP :

        Toast.makeText(GameActivity.this, "up " , Toast.LENGTH_SHORT).show();
        break;
    case MotionEvent.ACTION_MOVE :
        //Toast.makeText(GameActivity.this, "move", Toast.LENGTH_SHORT).show();
        break;
    }
    return true;
}

 }

触摸图像时,它会吐司掉下来,然后移开手指就会放弃。但是如何交换图像我无法理解。

4

3 回答 3

1

我建议使用 OnItemClicklistener 触摸两个不同的图像来交换它们。像这样:

private int firstPosition = -1;
...

gridView.setOnItemClickListener(new OnItemClickListener() {
    @Override
    public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
        if(firstPosition < 0) 
            firstPosition = position;
        else {
            Bitmap swapImage = chunkedImages.get(position);
            chunkedImages.set(position, chunkedImages.get(firstPosition));
            chunkedImages.set(firstPosition, swapImage);
            firstPosition = -1;
        }
    }
});

您应该添加功能,例如在选择第一张图像时突出显示它,但这是基本方法。

如果你想拖放,你需要做更多的工作......

于 2012-08-12T19:48:15.237 回答
1

正确的交换方式可能在适配器中完成。创建您自己的基本适配器或从任何其他适配器继承,并包括将从活动中调用的任何用于刷卡的方法。在此方法中,您可以执行必要的更改以成功交换。最终,您将能够使用Collections.swap交换数组中的项目

希望它有所帮助 *如果有必要,请不要忘记在源准备好时更新您的组件(notifyDatasetChanged

于 2012-08-12T20:00:51.207 回答
0

https://github.com/thquinn/DraggableGridView

这是一个解决方案。可能符合您的要求。一探究竟

于 2012-12-12T08:41:53.037 回答