我也来开发2048之配置界面设计

我们的程序当然不像现在市面上的2048那样死板,一辈子4X4的面板,现在的人,讲究的就是随心所欲,所有的东西都在我的掌控中,这才爽。

所以我们的程序也得有个配置界面,国际惯例,上图:

这个配置界面主要完成以下几个功能:

1、可配置游戏面板的维数,即4X4,5X5,6X6,其实继续写下去也是可以的,但是,欲望也是要有限度的啊,差不多就够了

2、要达到的目标,你可以选择到1024就爽了呢,还是2048才爽,还是4096才爽,其实也是可以一直写下去的,老规矩,不要把自己逼的太紧了,差不多就行了,虐自己何必呢

3、Contact Me,给我的博客打个广告啦

配置功能,基本写入SharedPreferences,这个因为大家使用都比较多了,就不详细说了

下面是源码:

package com.xys.game2048.activity;

import com.xys.game2048.R;
import com.xys.game2048.config.Config;

import android.app.Activity;
import android.app.AlertDialog;
import android.content.DialogInterface;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;

public class ConfigPreference extends Activity implements OnClickListener {

    private Button btnGameLines;

    private Button btnGoal;

    private Button btnBack;

    private Button btnDone;

    private String[] gameLinesList;

    private String[] gameGoalList;

    private AlertDialog.Builder builder;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
	super.onCreate(savedInstanceState);
	setContentView(R.layout.config_preference);
	initView();
    }

    private void initView() {
	btnGameLines = (Button) findViewById(R.id.btn_gamelines);
	btnGoal = (Button) findViewById(R.id.btn_goal);
	btnBack = (Button) findViewById(R.id.btn_back);
	btnDone = (Button) findViewById(R.id.btn_done);
	btnGameLines.setText("" + Config.sp.getInt(Config.KEY_GameLines, 4));
	btnGoal.setText("" + Config.sp.getInt(Config.KEY_GameGoal, 2048));
	btnGameLines.setOnClickListener(this);
	btnGoal.setOnClickListener(this);
	btnBack.setOnClickListener(this);
	btnDone.setOnClickListener(this);
	gameLinesList = new String[] { "4", "5", "6" };
	gameGoalList = new String[] { "1024", "2048", "4096" };
    }

    private void saveConfig() {
	Editor editor = Config.sp.edit();
	editor.putInt(Config.KEY_GameLines, Integer.parseInt(btnGameLines.getText().toString()));
	editor.putInt(Config.KEY_GameGoal, Integer.parseInt(btnGoal.getText().toString()));
	editor.commit();
    }

    @Override
    public void onClick(View v) {
	switch (v.getId()) {
	case R.id.btn_gamelines:
	    builder = new AlertDialog.Builder(this);
	    builder.setTitle("choose the lines of the game");
	    builder.setItems(gameLinesList, new DialogInterface.OnClickListener() {

		@Override
		public void onClick(DialogInterface dialog, int which) {
		    btnGameLines.setText(gameLinesList[which]);
		}
	    });
	    builder.create().show();
	    break;
	case R.id.btn_goal:
	    builder = new AlertDialog.Builder(this);
	    builder.setTitle("choose the goal of the game");
	    builder.setItems(gameGoalList, new DialogInterface.OnClickListener() {

		@Override
		public void onClick(DialogInterface dialog, int which) {
		    btnGoal.setText(gameGoalList[which]);
		}
	    });
	    builder.create().show();
	    break;
	case R.id.btn_back:
	    this.finish();
	    break;
	case R.id.btn_done:
	    saveConfig();
	    setResult(RESULT_OK);
	    this.finish();
	    break;
	default:
	    break;
	}
    }
}

以上

时间: 2024-10-28 02:37:26

我也来开发2048之配置界面设计的相关文章

Android UI开发专题(一) 之界面设计

  近期很多网友对Android用户界面的设计表示很感兴趣,对于Android UI开发自绘控件和游戏制作而言掌握好绘图基础是必不可少的.本次专题分10节来讲述,有关OpenGL ES相关的可能将放到以后再透露.本次主要涉及以下四个包的相关内容: android.content.res 资源类 android.graphics 底层图形类 android.view 显示类 android.widget 控件类 一.android.content.res.Resources 对于Android平台

安卓开发中某一个界面还没等你操作呢 自己就没了 哪里出问题了?

问题描述 安卓开发中某一个界面还没等你操作呢 自己就没了 哪里出问题了? 问题如上 好困惑! 解决方案 自己就没了,是返回上一级页面么?还是什么?有可能是AndroidManifest.xml文件里activity配置的问题.. 解决方案二: 出现fatal crash了把,抓下log看看. 解决方案三: 贴出代码,贴出log,才好分析,这样描述太抽象 解决方案四: 看一下log日志,看看错误信息. 解决方案五: 这个问题问的有点抽象能不能再具体些

《Android的设计与实现:卷I》——第1章 1.5Android源码开发工具的配置和使用

1.5 Android源码开发工具的配置和使用 Android源码开发需要安装配置Android SDK.Eclipse +ADT插件以及Source Insight工具,Android SDK中提供了大量的命令行工具供开发者操作设备和调试源代码:Eclipse+ADT插件用于开发和调试应用层以及应用框架层Java部分代码:Source Insight是阅读Android全部源代码的必备工具,但不具备调试功能.本节将分别介绍这三种工具的安装和使用. 1.5.1 配置Android SDK 步骤1

Windows7下PHP开发环境安装配置图文方法_php实例

      操作系统:Windows 7 Ultimate       WEB服务器:IIS 6.1(内部版本7600).       数据库:MySql5.0.67       PHP版本:5.2.13       我还担心Win7下可能会不兼容,结果是一点问题都没有.    一.安装MySql数据库       MySql数据库在这里下载:http://www.mysql.com/downloads/ 客户端工具Navicat(导航猫)在这里下载:http://www.navicat.com

【Windows10 IoT开发系列】配置篇

原文:[Windows10 IoT开发系列]配置篇 Windows10 For IoT是Windows 10家族的一个新星,其针对不同平台拥有不同的版本.而其最重要的一个版本是运行在Raspberry Pi.MinnowBoard和Galileo平台上的核心版.本文重点针对Raspberry Pi平台的Windwos10 IoT配置做介绍. Windows 10 IoT Editions ​一:设置你的电脑. 注:​开发Windows10 IoT的电脑需要Visual Studio 2015.

安卓做xml解析方面来配置界面的问题

问题描述 安卓做xml解析方面来配置界面的问题 现在公司是用php写的接口,自己用写XML来配置安卓界面和功能. 问题是这方面以后跳槽好不好跳,出来能干些什么? 解决方案 android开发的主要工作就是设计界面,通过接口处理数据. 解决方案二: 建议用json解析别用xml

看看GWT 2.0 新的界面设计 ( 通过配置 xml 进行设计.) UiBinder

技术上面的版本更新 1.7 到 2.0 究竟变了什么. 才发现.   多了一个UI的界面设计 通过配置 xml 进行界面 设计.   在 showcase里面的代码还是用老的办法去写代码..   在mail 的demo里面就不是了..而是通过xml进行.   在mail 类里面 属性.    写道 @UiField TopPanel topPanel;@UiField MailList mailList;@UiField MailDetail mailDetail;@UiField Shortc

Dev控件,在WinForm下动态配置界面

一.使用场景 用于数据录入界面,数据展示界面,查询配置界面等等.例如,我们为用户定制了一张人员信息卡片,往往初期开发时由于各种原因,没有设计某个字段,或者是界面展现的方式不够友好直观,那么我们希望通过以更改配置文件的方式来满足用户的需求,而不需要我们重新对项目代码生成发布,减少了开发人员的工作量. 当然,如果您的表单不是一个变化点,那么本人不建议使用配置的方式生成界面. 二.控件封装 基于对LayoutControl的封装,使其可根据配置文件的配置信息,动态的创建界面.由于该控件自带了可保存其布

无法登录无线路由器配置界面解决

介绍如何组建家庭无线局域网的文章,你能在网上搜索出一大堆来,这些文章看上去都很不错,不但过程描述的详细还配了相关图片.因为职业的缘故,笔者以前虽然经常关注无线路由器配置这方面的内容,却由于没有实际操作而流于表面,前几天耐不住诱惑搞了一套NETGEAR(美国网件)的无线套装,亲手改造了一下自家的局域网.本以为凭着几年的IT生涯,应该是手到擒来的事情,没想到却几经波折,下面把其中的经验教训跟大家共享. 无线路由器用的是NETGEAR WGR614(54M即802.11g的),网卡也是54M的(配置很