我正试图用图片制作Android益智游戏。 我到目前为止所做的是: - 我已经从EditText字段中删除了多少部分的图片; - 我把剪切的图片放在gridview中并得到了一个拼图表; -i还使用了Collection.suffle(list)来填充gridview中的图像;
现在,我正试图在gridview的两个图像上实现滑动效果。所以我想要实现的是类似于CandyCrush app或这个http://www.youtube.com/watch?v=qUoP87fNB8w的滑动效果。我的意思是,我想要保持一个图像并将其拖到顶部,以便它应该向上滑动。如果我点击图片并滑动到底部,它应该随着它下面的图片改变,依此类推......
这是我的代码:
Reset = (Button) findViewById(R.id.BReset);
SplitNo = (EditText) findViewById(R.id.edSplitBy);
SplitBy = Integer.parseInt(SplitNo.getText().toString());
ImgNo = SplitBy * SplitBy;
puzzle = (GridView) findViewById(R.id.puzzle);
rootImg = (ImageView) findViewById(R.id.source_image);
splitImage(rootImg);
formPuzzle(smallimages);
Reset.setOnClickListener(new OnClickListener() {
public void onClick(View v) {
Reset.setText("Reset");
SplitNo.getEditableText().toString();
SplitBy = Integer.parseInt(SplitNo.getText().toString());
ImgNo = SplitBy * SplitBy;
Collections.shuffle(smallimages);
formPuzzle(smallimages);
}
});
以下是我如何形成这个难题:
private void formPuzzle(ArrayList<PuzzleItem> smallimages) {
SMI = new SmallImageAdapter(this, smallimages);
puzzle.setAdapter(SMI);
puzzle.setNumColumns(SplitBy);
puzzle.setHorizontalSpacing(0);
puzzle.setVerticalSpacing(0); }
PuzzleItem.class:
public class PuzzleItem {
Bitmap puzzlepartImage;
int correctPosition;
public PuzzleItem(Bitmap d, int index) {
puzzlepartImage = d;
correctPosition = index;
}
我使用这个课只是为了记住碎片的位置,以便我可以检查拼图是否已经完成......
所以我只对如何通过从gridview中拖动项目来实现滑动动作感兴趣...
谢谢:)
编辑:我应该使用OnTouchListener吗?
答案 0 :(得分:1)
好的,我自己找到了解决方案:
private void formPuzzle(final ArrayList<PuzzleItem> smallimages) {
SMI = new SmallImageAdapter(this, smallimages);
puzzle.setAdapter(SMI);
puzzle.setNumColumns(SplitBy);
puzzle.setHorizontalSpacing(0);
puzzle.setVerticalSpacing(0);
puzzle.setOnTouchListener(new OnTouchListener() {
@Override
public boolean onTouch(View v, MotionEvent event) {
switch (event.getAction()) {
case MotionEvent.ACTION_DOWN: {
startX = event.getX();
startY = event.getY();
smallimage_Position = puzzle.pointToPosition((int) startX,
(int) startY);
return true;
}
case MotionEvent.ACTION_MOVE: {
endX = event.getX();
endY = event.getY();
Log.d("X", "..." +endX);
Log.d("Y", "..." +endY);
if(endX > startX + smallimage_Width/2 && (endY < startY - smallimage_Height/2 || endY < startY + smallimage_Height/2) ){
PuzzleItem p1 = SMI.smallimages.get(smallimage_Position);
PuzzleItem p2 = SMI.smallimages.get(smallimage_Position +1);
SMI.smallimages.set(smallimage_Position, p2);
SMI.smallimages.set(smallimage_Position +1, p1);
SMI.notifyDataSetChanged();
startX = endX*200;
startY = endY*200;
}
return true;
}
}
return true;
}
});
幻灯片由MotionEvent.Action_MOVE给出,并通过计算像素,你可以找到手指在哪个方向移动......例如..如果从我的Action_Move案例中识别向右滑动..
我希望这会帮助你们中的一些人......
答案 1 :(得分:1)
在滑块益智游戏中实现幻灯片的另一种方法是使用游戏引擎。我推荐Cocos2D for Android,这里有详细的教程......