用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - android代码库

实现拼图功能

2014-06-10 作者: 云代码会员举报

[android]代码库

package com.zl.moveimage;

import java.util.Random;
import android.app.Activity;
import android.graphics.drawable.Drawable;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.MotionEvent;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.View.OnClickListener;
import android.widget.AbsoluteLayout;
import android.widget.AbsoluteLayout.LayoutParams;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.Toast;
import android.widget.ImageView.ScaleType;

@SuppressWarnings("deprecation")
public class SimplePuzzle extends Activity {
	
	private static final int MENU_ABOUT = Menu.FIRST;
	private static final int MENU_EXIT = Menu.FIRST + 1;
	
	// 存储图片序列的int数组,最后一位为图片标记,用于换图片时的判断
	// 默认图片
	int[] queue = { R.drawable.p1, R.drawable.p2, R.drawable.p3, R.drawable.p4,
			R.drawable.p5, R.drawable.p6, R.drawable.p7, R.drawable.p8,
			R.drawable.p9, 1 };
	// 图片p系列
	int[] queue1 = { R.drawable.p1, R.drawable.p2, R.drawable.p3,
			R.drawable.p4, R.drawable.p5, R.drawable.p6, R.drawable.p7,
			R.drawable.p8, R.drawable.p9, 1 };
	// 图片a系列
	int[] queue2 = { R.drawable.a1, R.drawable.a2, R.drawable.a3,
			R.drawable.a4, R.drawable.a5, R.drawable.a6, R.drawable.a7,
			R.drawable.a8, R.drawable.a9, 2 };

	// ImageView 图片显示区域,按九宫格分为九个区域
	private ImageView iv_1, iv_2, iv_3, iv_4, iv_5, iv_6, iv_7, iv_8, iv_9;

	// 图片的位置参数对象,
	// 通过Drawable对象的getLayoutParams()方法取得,可得到图片的位置信息
	// 通过设置LayoutParams方法的x,y坐标,并传给图片,可以改变图片的位置,如:
	// setLayoutParams(paramsIv_1)

	private AbsoluteLayout.LayoutParams paramsIv_1, paramsIv_2, paramsIv_3,
			paramsIv_4, paramsIv_5, paramsIv_6, paramsIv_7, paramsIv_8,
			paramsIv_9;

	// 记录图片的长宽,与左上角一点的坐标
	private int picWidth, picHeight, picX1, picY1, picX2, picY2, picX3, picY3,
			picX4, picY4, picX5, picY5, picX6, picY6, picX7, picY7, picX8,
			picY8, picX9, picY9;

	// 在onTouchEvent方法中设置,标记是否击中图片
	private boolean clickPic1, clickPic2, clickPic3, clickPic4, clickPic5,
			clickPic6, clickPic7, clickPic8, clickPic9;

	// 图片锁,每次只能对一个图片进行操作。flag为真时表明已经ACTION_DOWN一张图片
	private boolean flag = false;

	/** Called when the activity is first created. */
	@Override
	public void onCreate(Bundle savedInstanceState) {

		super.onCreate(savedInstanceState);
		// 全屏显示
		requestWindowFeature(Window.FEATURE_NO_TITLE);
		getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
				WindowManager.LayoutParams.FLAG_FULLSCREEN);
		// 加载layout
		setContentView(R.layout.main);
		// 按照queue的顺序显示图片
		findImageView(queue);
		//按钮
		Button button01 = (Button) findViewById(R.id.button01);
		Button button02 = (Button) findViewById(R.id.button02);
		button01.setOnClickListener(button01Listener);
		button02.setOnClickListener(button02Listener);
	}

	/**
	 * 创建菜单选项
	 */
	@Override
	public boolean onCreateOptionsMenu(Menu menu) {
		super.onCreateOptionsMenu(menu);
		//关于选项
		menu.add(0, MENU_ABOUT, 0, R.string.menu_about);
		//退出选项
		menu.add(0, MENU_EXIT, 0, R.string.menu_exit);
		return true;
	}

	@Override
	public boolean onOptionsItemSelected(MenuItem item) {
		switch (item.getItemId()) {
		case MENU_ABOUT:
			Toast
					.makeText(
							this,
							"App coded by ZL at 2010.9.17\nhttp://blog.csdn.net/zzzrlhzl",
							Toast.LENGTH_SHORT).show();
			break;
		case MENU_EXIT:
			finish();
		}

		return true;
	}

	/**
	 * 打乱数组顺序
	 * 
	 * @param intArray
	 * @return 打乱后的int数组
	 */
	public static int[] shuffle(int[] intArray) {
		Random ran = new Random();
		int num;
		for (int i = 0; i < 9; i++) {
			for (int j = 0; j < 9; j++) {
				num = ran.nextInt(9);
				swap(intArray, j, num);
			}
		}
		return intArray;
	}

	/**
	 * 用于交换intArray中下标分别为index1和index2的值
	 */
	public static void swap(int[] intArray, int index1, int index2) {
		int temp = 0;
		temp = intArray[index1];
		intArray[index1] = intArray[index2];
		intArray[index2] = temp;
	}

	/**
	 * 打乱数组
	 */
	private OnClickListener button01Listener = new OnClickListener() {
		public void onClick(View v) {
			queue = shuffle(queue);
			findImageView(queue);
		}
	};

	/**
	 * 换图片
	 */
	private OnClickListener button02Listener = new OnClickListener() {
		public void onClick(View v) {
			//判断数组最后一位的标记,只有两幅图,随便做一个简单判断
			if (queue[9] == 1)
				//数组复制,如果用queue==queue2的话,会让queue指向queue2的地址,
				//修改queue的同时也会修改queue2
				System.arraycopy(queue2, 0, queue, 0, queue2.length);
			else
				System.arraycopy(queue1, 0, queue, 0, queue1.length);
			findImageView(queue);
		}
	};

	/**
	 * 按照int数组queue的顺序显示图片
	 * 
	 * @param queue
	 */
	@SuppressWarnings("deprecation")
	public void findImageView(int[] queue) {
		//每幅分图的大小
		picHeight = 106;
		picWidth = 70;

		Drawable pic1 = getResources().getDrawable(queue[0]);
		iv_1 = (ImageView) this.findViewById(R.id.ImageView01);
		iv_1.setImageDrawable(pic1);
		// CENTER_INSIDE 将图片的内容完整居中显示,通过按比例缩小原来的size使得图片长/宽等于或小于View的长/宽
		iv_1.setScaleType(ScaleType.CENTER_INSIDE);
		paramsIv_1 = (LayoutParams) iv_1.getLayoutParams();
		picX1 = paramsIv_1.x;
		picY1 = paramsIv_1.y;

		Drawable pic2 = getResources().getDrawable(queue[1]);
		iv_2 = (ImageView) this.findViewById(R.id.ImageView02);
		iv_2.setImageDrawable(pic2);
		iv_2.setScaleType(ScaleType.CENTER_INSIDE);
		paramsIv_2 = (LayoutParams) iv_2.getLayoutParams();
		picX2 = paramsIv_2.x;
		picY2 = paramsIv_2.y;

		Drawable pic3 = getResources().getDrawable(queue[2]);
		iv_3 = (ImageView) this.findViewById(R.id.ImageView03);
		iv_3.setImageDrawable(pic3);
		iv_3.setScaleType(ScaleType.CENTER_INSIDE);
		paramsIv_3 = (LayoutParams) iv_3.getLayoutParams();
		picX3 = paramsIv_3.x;
		picY3 = paramsIv_3.y;

		Drawable pic4 = getResources().getDrawable(queue[3]);
		iv_4 = (ImageView) this.findViewById(R.id.ImageView04);
		iv_4.setImageDrawable(pic4);
		iv_4.setScaleType(ScaleType.CENTER_INSIDE);
		paramsIv_4 = (LayoutParams) iv_4.getLayoutParams();
		picX4 = paramsIv_4.x;
		picY4 = paramsIv_4.y;

		Drawable pic5 = getResources().getDrawable(queue[4]);
		iv_5 = (ImageView) this.findViewById(R.id.ImageView05);
		iv_5.setImageDrawable(pic5);
		iv_5.setScaleType(ScaleType.CENTER_INSIDE);
		paramsIv_5 = (LayoutParams) iv_5.getLayoutParams();
		picX5 = paramsIv_5.x;
		picY5 = paramsIv_5.y;

		Drawable pic6 = getResources().getDrawable(queue[5]);
		iv_6 = (ImageView) this.findViewById(R.id.ImageView06);
		iv_6.setImageDrawable(pic6);
		iv_6.setScaleType(ScaleType.CENTER_INSIDE);
		paramsIv_6 = (LayoutParams) iv_6.getLayoutParams();
		picX6 = paramsIv_6.x;
		picY6 = paramsIv_6.y;

		Drawable pic7 = getResources().getDrawable(queue[6]);
		iv_7 = (ImageView) this.findViewById(R.id.ImageView07);
		iv_7.setImageDrawable(pic7);
		iv_7.setScaleType(ScaleType.CENTER_INSIDE);
		paramsIv_7 = (LayoutParams) iv_7.getLayoutParams();
		picX7 = paramsIv_7.x;
		picY7 = paramsIv_7.y;

		Drawable pic8 = getResources().getDrawable(queue[7]);
		iv_8 = (ImageView) this.findViewById(R.id.ImageView08);
		iv_8.setImageDrawable(pic8);
		iv_8.setScaleType(ScaleType.CENTER_INSIDE);
		paramsIv_8 = (LayoutParams) iv_8.getLayoutParams();
		picX8 = paramsIv_8.x;
		picY8 = paramsIv_8.y;

		Drawable pic9 = getResources().getDrawable(queue[8]);
		iv_9 = (ImageView) this.findViewById(R.id.ImageView09);
		iv_9.setImageDrawable(pic9);
		iv_9.setScaleType(ScaleType.CENTER_INSIDE);
		paramsIv_9 = (LayoutParams) iv_9.getLayoutParams();
		picX9 = paramsIv_9.x;
		picY9 = paramsIv_9.y;
	}

	int temp;

	@Override
	public boolean onTouchEvent(MotionEvent event) {

		float x = event.getX();

		float y = event.getY();

		switch (event.getAction()) {

		case MotionEvent.ACTION_DOWN:
			// flag为TRUE时代表已经按下一张图片,跳过此部
			if (flag) {
				break;
			} else {
				flag = true;

				// if语句 判断当鼠标点下时,是否击中图片

				if (x >= picX1 && x <= picX1 + picWidth && y >= picY1
						&& y <= picY1 + picHeight) {
					clickPic1 = true;
				} else {
					clickPic1 = false;
				}

				if (x >= picX2 && x <= picX2 + picWidth && y >= picY2
						&& y <= picY2 + picHeight) {
					clickPic2 = true;
				} else {
					clickPic2 = false;
				}

				if (x >= picX3 && x <= picX3 + picWidth && y >= picY3
						&& y <= picY3 + picHeight) {
					clickPic3 = true;
				} else {
					clickPic3 = false;
				}

				if (x >= picX4 && x <= picX4 + picWidth && y >= picY4
						&& y <= picY4 + picHeight) {
					clickPic4 = true;
				} else {
					clickPic4 = false;
				}

				if (x >= picX5 && x <= picX5 + picWidth && y >= picY5
						&& y <= picY5 + picHeight) {
					clickPic5 = true;
				} else {
					clickPic5 = false;
				}

				if (x >= picX6 && x <= picX6 + picWidth && y >= picY6
						&& y <= picY6 + picHeight) {
					clickPic6 = true;
				} else {
					clickPic6 = false;
				}

				if (x >= picX7 && x <= picX7 + picWidth && y >= picY7
						&& y <= picY7 + picHeight) {
					clickPic7 = true;
				} else {
					clickPic7 = false;
				}

				if (x >= picX8 && x <= picX8 + picWidth && y >= picY8
						&& y <= picY8 + picHeight) {
					clickPic8 = true;
				} else {
					clickPic8 = false;
				}

				if (x >= picX9 && x <= picX9 + picWidth && y >= picY9
						&& y <= picY9 + picHeight) {
					clickPic9 = true;
				} else {
					clickPic9 = false;
				}

				break;
			}

		case MotionEvent.ACTION_UP:
			// 保持ImageView的位置不变
			paramsIv_1.x = picX1;
			paramsIv_1.y = picY1;
			iv_1.setLayoutParams(paramsIv_1);

			paramsIv_2.x = picX2;
			paramsIv_2.y = picY2;
			iv_2.setLayoutParams(paramsIv_2);

			paramsIv_3.x = picX3;
			paramsIv_3.y = picY3;
			iv_3.setLayoutParams(paramsIv_3);

			paramsIv_4.x = picX4;
			paramsIv_4.y = picY4;
			iv_4.setLayoutParams(paramsIv_4);

			paramsIv_5.x = picX5;
			paramsIv_5.y = picY5;
			iv_5.setLayoutParams(paramsIv_5);

			paramsIv_6.x = picX6;
			paramsIv_6.y = picY6;
			iv_6.setLayoutParams(paramsIv_6);

			paramsIv_7.x = picX7;
			paramsIv_7.y = picY7;
			iv_7.setLayoutParams(paramsIv_7);

			paramsIv_8.x = picX8;
			paramsIv_8.y = picY8;
			iv_8.setLayoutParams(paramsIv_8);

			paramsIv_9.x = picX9;
			paramsIv_9.y = picY9;
			iv_9.setLayoutParams(paramsIv_9);

			flag = false;
			if (clickPic1) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				if (x >= picX2 && x <= picX2 + picWidth && y >= picY2
						&& y <= picY2 + picHeight) {
					// 交换全局int数组queue的元素顺序,达到交换图片位置的目的
					temp = queue[0];
					queue[0] = queue[1];
					queue[1] = temp;
					// 显示交换顺序后的图片
					findImageView(queue);
				} else if (x >= picX3 && x <= picX3 + picWidth && y >= picY3
						&& y <= picY3 + picHeight) {
					temp = queue[0];
					queue[0] = queue[2];
					queue[2] = temp;
					findImageView(queue);
				} else if (x >= picX4 && x <= picX4 + picWidth && y >= picY4
						&& y <= picY4 + picHeight) {
					temp = queue[0];
					queue[0] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX5 && x <= picX5 + picWidth && y >= picY5
						&& y <= picY5 + picHeight) {
					temp = queue[0];
					queue[0] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX6 && x <= picX6 + picWidth && y >= picY6
						&& y <= picY6 + picHeight) {
					temp = queue[0];
					queue[0] = queue[5];
					queue[5] = temp;
					findImageView(queue);
				} else if (x >= picX7 && x <= picX7 + picWidth && y >= picY7
						&& y <= picY7 + picHeight) {
					temp = queue[0];
					queue[0] = queue[6];
					queue[6] = temp;
					findImageView(queue);
				} else if (x >= picX8 && x <= picX8 + picWidth && y >= picY8
						&& y <= picY8 + picHeight) {
					temp = queue[0];
					queue[0] = queue[7];
					queue[7] = temp;
					findImageView(queue);
				} else if (x >= picX9 && x <= picX9 + picWidth && y >= picY9
						&& y <= picY9 + picHeight) {
					temp = queue[0];
					queue[0] = queue[8];
					queue[8] = temp;
					findImageView(queue);
				} else {

				}
			}

			if (clickPic2) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				if (x >= picX1 && x <= picX1 + picWidth && y >= picY1
						&& y <= picY1 + picHeight) {
					temp = queue[0];
					queue[0] = queue[1];
					queue[1] = temp;
					findImageView(queue);
				} else if (x >= picX3 && x <= picX3 + picWidth && y >= picY3
						&& y <= picY3 + picHeight) {
					temp = queue[1];
					queue[1] = queue[2];
					queue[2] = temp;
					findImageView(queue);
				} else if (x >= picX4 && x <= picX4 + picWidth && y >= picY4
						&& y <= picY4 + picHeight) {
					temp = queue[1];
					queue[1] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX5 && x <= picX5 + picWidth && y >= picY5
						&& y <= picY5 + picHeight) {
					temp = queue[1];
					queue[1] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX6 && x <= picX6 + picWidth && y >= picY6
						&& y <= picY6 + picHeight) {
					temp = queue[1];
					queue[1] = queue[5];
					queue[5] = temp;
					findImageView(queue);
				} else if (x >= picX7 && x <= picX7 + picWidth && y >= picY7
						&& y <= picY7 + picHeight) {
					temp = queue[1];
					queue[1] = queue[6];
					queue[6] = temp;
					findImageView(queue);
				} else if (x >= picX8 && x <= picX8 + picWidth && y >= picY8
						&& y <= picY8 + picHeight) {
					temp = queue[1];
					queue[1] = queue[7];
					queue[7] = temp;
					findImageView(queue);
				} else if (x >= picX9 && x <= picX9 + picWidth && y >= picY9
						&& y <= picY9 + picHeight) {
					temp = queue[1];
					queue[1] = queue[8];
					queue[8] = temp;
					findImageView(queue);
				} else {

				}

			}

			if (clickPic3) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				if (x >= picX1 && x <= picX1 + picWidth && y >= picY1
						&& y <= picY1 + picHeight) {
					temp = queue[0];
					queue[0] = queue[2];
					queue[2] = temp;
					findImageView(queue);
				} else if (x >= picX2 && x <= picX2 + picWidth && y >= picY2
						&& y <= picY2 + picHeight) {
					temp = queue[2];
					queue[2] = queue[1];
					queue[1] = temp;
					findImageView(queue);
				} else if (x >= picX4 && x <= picX4 + picWidth && y >= picY4
						&& y <= picY4 + picHeight) {
					temp = queue[2];
					queue[2] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX5 && x <= picX5 + picWidth && y >= picY5
						&& y <= picY5 + picHeight) {
					temp = queue[2];
					queue[2] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX6 && x <= picX6 + picWidth && y >= picY6
						&& y <= picY6 + picHeight) {
					temp = queue[2];
					queue[2] = queue[5];
					queue[5] = temp;
					findImageView(queue);
				} else if (x >= picX7 && x <= picX7 + picWidth && y >= picY7
						&& y <= picY7 + picHeight) {
					temp = queue[2];
					queue[2] = queue[6];
					queue[6] = temp;
					findImageView(queue);
				} else if (x >= picX8 && x <= picX8 + picWidth && y >= picY8
						&& y <= picY8 + picHeight) {
					temp = queue[2];
					queue[2] = queue[7];
					queue[7] = temp;
					findImageView(queue);
				} else if (x >= picX9 && x <= picX9 + picWidth && y >= picY9
						&& y <= picY9 + picHeight) {
					temp = queue[2];
					queue[2] = queue[8];
					queue[8] = temp;
					findImageView(queue);
				} else {

				}

			}

			if (clickPic4) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				if (x >= picX1 && x <= picX1 + picWidth && y >= picY1
						&& y <= picY1 + picHeight) {
					temp = queue[0];
					queue[0] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX2 && x <= picX2 + picWidth && y >= picY2
						&& y <= picY2 + picHeight) {
					temp = queue[3];
					queue[3] = queue[1];
					queue[1] = temp;
					findImageView(queue);
				} else if (x >= picX3 && x <= picX3 + picWidth && y >= picY3
						&& y <= picY3 + picHeight) {
					temp = queue[2];
					queue[2] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX5 && x <= picX5 + picWidth && y >= picY5
						&& y <= picY5 + picHeight) {
					temp = queue[4];
					queue[4] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX6 && x <= picX6 + picWidth && y >= picY6
						&& y <= picY6 + picHeight) {
					temp = queue[5];
					queue[5] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX7 && x <= picX7 + picWidth && y >= picY7
						&& y <= picY7 + picHeight) {
					temp = queue[6];
					queue[6] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX8 && x <= picX8 + picWidth && y >= picY8
						&& y <= picY8 + picHeight) {
					temp = queue[7];
					queue[7] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX9 && x <= picX9 + picWidth && y >= picY9
						&& y <= picY9 + picHeight) {
					temp = queue[8];
					queue[8] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else {

				}

			}

			if (clickPic5) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				if (x >= picX1 && x <= picX1 + picWidth && y >= picY1
						&& y <= picY1 + picHeight) {
					temp = queue[0];
					queue[0] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX2 && x <= picX2 + picWidth && y >= picY2
						&& y <= picY2 + picHeight) {
					temp = queue[4];
					queue[4] = queue[1];
					queue[1] = temp;
					findImageView(queue);
				} else if (x >= picX3 && x <= picX3 + picWidth && y >= picY3
						&& y <= picY3 + picHeight) {
					temp = queue[2];
					queue[2] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX4 && x <= picX4 + picWidth && y >= picY4
						&& y <= picY4 + picHeight) {
					temp = queue[4];
					queue[4] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX6 && x <= picX6 + picWidth && y >= picY6
						&& y <= picY6 + picHeight) {
					temp = queue[5];
					queue[5] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX7 && x <= picX7 + picWidth && y >= picY7
						&& y <= picY7 + picHeight) {
					temp = queue[6];
					queue[6] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX8 && x <= picX8 + picWidth && y >= picY8
						&& y <= picY8 + picHeight) {
					temp = queue[7];
					queue[7] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX9 && x <= picX9 + picWidth && y >= picY9
						&& y <= picY9 + picHeight) {
					temp = queue[8];
					queue[8] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else {

				}

			}

			if (clickPic6) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				if (x >= picX1 && x <= picX1 + picWidth && y >= picY1
						&& y <= picY1 + picHeight) {
					temp = queue[0];
					queue[0] = queue[5];
					queue[5] = temp;
					findImageView(queue);
				} else if (x >= picX2 && x <= picX2 + picWidth && y >= picY2
						&& y <= picY2 + picHeight) {
					temp = queue[5];
					queue[5] = queue[1];
					queue[1] = temp;
					findImageView(queue);
				} else if (x >= picX3 && x <= picX3 + picWidth && y >= picY3
						&& y <= picY3 + picHeight) {
					temp = queue[2];
					queue[2] = queue[5];
					queue[5] = temp;
					findImageView(queue);
				} else if (x >= picX4 && x <= picX4 + picWidth && y >= picY4
						&& y <= picY4 + picHeight) {
					temp = queue[5];
					queue[5] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX5 && x <= picX5 + picWidth && y >= picY5
						&& y <= picY5 + picHeight) {
					temp = queue[5];
					queue[5] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX7 && x <= picX7 + picWidth && y >= picY7
						&& y <= picY7 + picHeight) {
					temp = queue[6];
					queue[6] = queue[5];
					queue[5] = temp;
					findImageView(queue);
				} else if (x >= picX8 && x <= picX8 + picWidth && y >= picY8
						&& y <= picY8 + picHeight) {
					temp = queue[7];
					queue[7] = queue[5];
					queue[5] = temp;
					findImageView(queue);
				} else if (x >= picX9 && x <= picX9 + picWidth && y >= picY9
						&& y <= picY9 + picHeight) {
					temp = queue[8];
					queue[8] = queue[5];
					queue[5] = temp;
					findImageView(queue);
				} else {

				}

			}

			if (clickPic7) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				if (x >= picX1 && x <= picX1 + picWidth && y >= picY1
						&& y <= picY1 + picHeight) {
					temp = queue[0];
					queue[0] = queue[6];
					queue[6] = temp;
					findImageView(queue);
				} else if (x >= picX2 && x <= picX2 + picWidth && y >= picY2
						&& y <= picY2 + picHeight) {
					temp = queue[6];
					queue[6] = queue[1];
					queue[1] = temp;
					findImageView(queue);
				} else if (x >= picX3 && x <= picX3 + picWidth && y >= picY3
						&& y <= picY3 + picHeight) {
					temp = queue[2];
					queue[2] = queue[6];
					queue[6] = temp;
					findImageView(queue);
				} else if (x >= picX4 && x <= picX4 + picWidth && y >= picY4
						&& y <= picY4 + picHeight) {
					temp = queue[6];
					queue[6] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX5 && x <= picX5 + picWidth && y >= picY5
						&& y <= picY5 + picHeight) {
					temp = queue[6];
					queue[6] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX6 && x <= picX6 + picWidth && y >= picY6
						&& y <= picY6 + picHeight) {
					temp = queue[6];
					queue[6] = queue[5];
					queue[5] = temp;
					findImageView(queue);
				} else if (x >= picX8 && x <= picX8 + picWidth && y >= picY8
						&& y <= picY8 + picHeight) {
					temp = queue[7];
					queue[7] = queue[6];
					queue[6] = temp;
					findImageView(queue);
				} else if (x >= picX9 && x <= picX9 + picWidth && y >= picY9
						&& y <= picY9 + picHeight) {
					temp = queue[8];
					queue[8] = queue[6];
					queue[6] = temp;
					findImageView(queue);
				} else {

				}

			}

			if (clickPic8) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				if (x >= picX1 && x <= picX1 + picWidth && y >= picY1
						&& y <= picY1 + picHeight) {
					temp = queue[0];
					queue[0] = queue[7];
					queue[7] = temp;
					findImageView(queue);
				} else if (x >= picX2 && x <= picX2 + picWidth && y >= picY2
						&& y <= picY2 + picHeight) {
					temp = queue[7];
					queue[7] = queue[1];
					queue[1] = temp;
					findImageView(queue);
				} else if (x >= picX3 && x <= picX3 + picWidth && y >= picY3
						&& y <= picY3 + picHeight) {
					temp = queue[2];
					queue[2] = queue[7];
					queue[7] = temp;
					findImageView(queue);
				} else if (x >= picX4 && x <= picX4 + picWidth && y >= picY4
						&& y <= picY4 + picHeight) {
					temp = queue[7];
					queue[7] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX5 && x <= picX5 + picWidth && y >= picY5
						&& y <= picY5 + picHeight) {
					temp = queue[7];
					queue[7] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX6 && x <= picX6 + picWidth && y >= picY6
						&& y <= picY6 + picHeight) {
					temp = queue[7];
					queue[7] = queue[5];
					queue[5] = temp;
					findImageView(queue);
				} else if (x >= picX7 && x <= picX7 + picWidth && y >= picY7
						&& y <= picY7 + picHeight) {
					temp = queue[7];
					queue[7] = queue[6];
					queue[6] = temp;
					findImageView(queue);
				} else if (x >= picX9 && x <= picX9 + picWidth && y >= picY9
						&& y <= picY9 + picHeight) {
					temp = queue[8];
					queue[8] = queue[7];
					queue[7] = temp;
					findImageView(queue);
				} else {

				}

			}

			if (clickPic9) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				if (x >= picX1 && x <= picX1 + picWidth && y >= picY1
						&& y <= picY1 + picHeight) {
					temp = queue[0];
					queue[0] = queue[8];
					queue[8] = temp;
					findImageView(queue);
				} else if (x >= picX2 && x <= picX2 + picWidth && y >= picY2
						&& y <= picY2 + picHeight) {
					temp = queue[8];
					queue[8] = queue[1];
					queue[1] = temp;
					findImageView(queue);
				} else if (x >= picX3 && x <= picX3 + picWidth && y >= picY3
						&& y <= picY3 + picHeight) {
					temp = queue[2];
					queue[2] = queue[8];
					queue[8] = temp;
					findImageView(queue);
				} else if (x >= picX4 && x <= picX4 + picWidth && y >= picY4
						&& y <= picY4 + picHeight) {
					temp = queue[8];
					queue[8] = queue[3];
					queue[3] = temp;
					findImageView(queue);
				} else if (x >= picX5 && x <= picX5 + picWidth && y >= picY5
						&& y <= picY5 + picHeight) {
					temp = queue[8];
					queue[8] = queue[4];
					queue[4] = temp;
					findImageView(queue);
				} else if (x >= picX6 && x <= picX6 + picWidth && y >= picY6
						&& y <= picY6 + picHeight) {
					temp = queue[8];
					queue[8] = queue[5];
					queue[5] = temp;
					findImageView(queue);
				} else if (x >= picX7 && x <= picX7 + picWidth && y >= picY7
						&& y <= picY7 + picHeight) {
					temp = queue[8];
					queue[8] = queue[6];
					queue[6] = temp;
					findImageView(queue);
				} else if (x >= picX8 && x <= picX8 + picWidth && y >= picY8
						&& y <= picY8 + picHeight) {
					temp = queue[8];
					queue[8] = queue[7];
					queue[7] = temp;
					findImageView(queue);
				} else {

				}

			}
			break;

		case MotionEvent.ACTION_MOVE:

			// 当Action_Down击中图片时,才执行move的动作

			// 否则跳过

			if (clickPic1) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				paramsIv_1.x = (int) (x - picWidth / 2);

				paramsIv_1.y = (int) (y - picHeight / 2);
				//通过setLayoutParams达到图片跟随手指移动的目的
				iv_1.setLayoutParams(paramsIv_1);

			}

			if (clickPic2) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				paramsIv_2.x = (int) (x - picWidth / 2);

				paramsIv_2.y = (int) (y - picHeight / 2);

				iv_2.setLayoutParams(paramsIv_2);

			}

			if (clickPic3) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				paramsIv_3.x = (int) (x - picWidth / 2);

				paramsIv_3.y = (int) (y - picHeight / 2);

				iv_3.setLayoutParams(paramsIv_3);

			}

			if (clickPic4) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				paramsIv_4.x = (int) (x - picWidth / 2);

				paramsIv_4.y = (int) (y - picHeight / 2);

				iv_4.setLayoutParams(paramsIv_4);
			}

			if (clickPic5) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				paramsIv_5.x = (int) (x - picWidth / 2);

				paramsIv_5.y = (int) (y - picHeight / 2);

				iv_5.setLayoutParams(paramsIv_5);
			}

			if (clickPic6) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				paramsIv_6.x = (int) (x - picWidth / 2);

				paramsIv_6.y = (int) (y - picHeight / 2);

				iv_6.setLayoutParams(paramsIv_6);
			}

			if (clickPic7) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				paramsIv_7.x = (int) (x - picWidth / 2);

				paramsIv_7.y = (int) (y - picHeight / 2);

				iv_7.setLayoutParams(paramsIv_7);
			}

			if (clickPic8) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				paramsIv_8.x = (int) (x - picWidth / 2);

				paramsIv_8.y = (int) (y - picHeight / 2);

				iv_8.setLayoutParams(paramsIv_8);
			}

			if (clickPic9) {

				// picWidth与picHeight分别除以2,定位击中点为图片的中心

				paramsIv_9.x = (int) (x - picWidth / 2);

				paramsIv_9.y = (int) (y - picHeight / 2);

				iv_9.setLayoutParams(paramsIv_9);
			}

			break;

		}

		return super.onTouchEvent(event);

	}

}

[代码运行效果截图]


实现拼图功能

[源代码打包下载]




网友评论    (发表评论)

共5 条评论 1/1页

发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...