您的位置:首页 > 其它

数独设计(3)

2015-09-24 15:25 183 查看
这个类是定义触摸事件,获取坐标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();
}
}


问题总结:

今天遇到的问题比较多,大多是书上找不到的,都是一些细小的问题,以后要多多留意细节,不然整天被细节卡住。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: