这个类是定义触摸事件,获取坐标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(); } }
问题总结:
今天遇到的问题比较多,大多是书上找不到的,都是一些细小的问题,以后要多多留意细节,不然整天被细节卡住。