• 数独设计(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();
    	}
    }
    

     问题总结:

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

  • 相关阅读:
    cogs 826. Feb11] GF打dota
    cogs 133. [USACO Mar08] 牛跑步 A*k短路算法
    luogu cogs 1437. [NOIP2013]转圈游戏
    RESTful
    中间件
    回顾基础知识,类,fbv,cbv
    Vue
    ES6的一些说明
    小试牛刀2
    小试牛刀
  • 原文地址:https://www.cnblogs.com/kasion/p/4835469.html
Copyright © 2020-2023  润新知