数独设计(3)

这个类是定义触摸事件,获取坐标X,Y。

在View类中,覆写onTouchEvent(MotionEvent event)方法。

public boolean onTouchEvent(MotionEvent event)
	{
		// TODO Auto-generated method stub
		if(event.getAction() != MotionEvent.ACTION_DOWN)
		{
			return super.onTouchEvent(event);
		}
		
		selectX = (int)(event.getX()/width);//获得触摸点在格子中的的x坐标
		selectY = (int)(event.getY()/height);//获得触摸点在格子中的y坐标
		
		int[] used = game.getUsedTile(selectX, selectY);//获得已经使用了的数据,这样就可以知道哪些数字不能用了
		StringBuffer sb = new StringBuffer();
		for(int i = 0; i<used.length; i++)
		{
			sb.append(used[i]);
		}
		Log.i("TAG", sb.toString());//调试输出不可用的数据
}

继承Dialog类,自定义一个dialog

package com.mars.demo;

import android.app.Dialog;
import android.content.Context;
import android.os.Bundle;
import android.util.Log;
import android.view.View;

public class KeyDialog extends Dialog
{
	private int[] used;
	private View[] keys = new View[9];
	private MyView myView;
	
	public KeyDialog(Context context ,int[] used , MyView myView)
	{
		super(context);
		this.used = used;
		this.myView = myView;
		// TODO Auto-generated constructor stub
	}

	@Override
	protected void onCreate(Bundle savedInstanceState)
	{
		// TODO Auto-generated method stub
		super.onCreate(savedInstanceState);
		setTitle("KeyDialog");
		setContentView(R.layout.keypad);
		findAllViews();
		for(int i=0; i<this.used.length; i++)
		{
			if(used[i] != 0)
			{
				keys[used[i]-1].setVisibility(View.INVISIBLE);
			}
		}
		setListener();
	}

	//初始化9个按钮
	public void findAllViews()
	{
		keys[0] = findViewById(R.id.keypad_1);
		keys[1] = findViewById(R.id.keypad_2);
		keys[2] = findViewById(R.id.keypad_3);
		keys[3] = findViewById(R.id.keypad_4);
		keys[4] = findViewById(R.id.keypad_5);
		keys[5] = findViewById(R.id.keypad_6);
		keys[6] = findViewById(R.id.keypad_7);
		keys[7] = findViewById(R.id.keypad_8);
		keys[8] = findViewById(R.id.keypad_9);
	}
	//为按钮设置监听器
	public void setListener()
	{
		for(int i = 0; i<keys.length; i++)
		{
			final int t = i+1;
			keys[i].setOnClickListener(new View.OnClickListener()
			{
				
				@Override
				public void onClick(View v)
				{
					// TODO Auto-generated method stub
					returnResult(t);
				}
			});
		}
	}
	
	//对话框将选择的数据传递给View对象,让其处理业务逻辑
	public void returnResult(int tile)
	{
		myView.setSelectTile(tile);
		dismiss();
	}
}

 问题总结:

今天遇到的问题比较多,大多是书上找不到的,都是一些细小的问题,以后要多多留意细节,不然整天被细节卡住。

posted @ 2015-09-24 15:25  29罗凯旋  阅读(191)  评论(0编辑  收藏  举报