=
表5.2 资源文件名称与用途
资源目录 文 件 说 明 rotatecurrentweather.xml 渐变透明度动画效果 translatecloudleft.xml translatecloudright.xml translaterain01.xml Anim translaterain02.xml translaterain03.xml translaterain04.xml translaterain05.xml Drawable-hdpl drawable Drawable-ldpl Drawable-mdpi app.xml Main_bak.xml layout Main.xml Rank_time.xml Rank.xml values Xml color.xml strings.xml weatherwidget.xml 程序首页页面布局 程序显示主页面页面的布局 “详细显示”页面上边的显示当前的布局 详细显示”页面下布局 “详细显示”页面下边的显示的布局 保存颜色的XML文件 保存字符串的XML的文件 AppWidget的属性文件 这个文件夹里是工程里所用的图片,如有表示随机卡片、数字等,此处不赘述。 画面转换位置移动动画效果(从左至右) 画面转换位置移动动画效果(从右至左) 画面转换位置移动动画效果(从上至下) 画面转换位置移动动画效果(从上至下) 画面转换位置移动动画效果(从上至下) 画面转换位置移动动画效果(从上至下) 画面转换位置移动动画效果(从上至下) 5.2数据提供者
数据提供者ForecastProvider继承ContentProvider,是在应用程序间共享数据的一种接口机制。应用程序在不同的进程中运行,因此,数据和文件在不同的应用程序之间是不能够直接进行访问的。而CotentProvider为程序员提供了较高级的数据共享方法,应用程序可以指定需要共享的数据,而其他应用程序则可以在不知数据来源、路径的情况下,对共享数据进行查询、添加、删除和更新等操作。
1.程序首页代码
=
(1)public class AppActivity extends Activity implements OnClickListener{ (2)private final static String TAG = \(3)private Button btnStartGame; //开始游戏 (4)private Button btnRankList; //游戏排行 (5)private Spinner spiGameModel; //游戏模式 (6)private String gameModel; //游戏模式值 (7)public void onCreate(Bundle savedInstanceState) { (8)super.onCreate(savedInstanceState); (9)setContentView(R.layout.app);
(10)//获取开始游戏按钮并为其注册监听事件
(11)btnStartGame = (Button)findViewById(R.id.btnStartGame); (12)btnStartGame.setOnClickListener(this); (13)//获取游戏排行按钮并为其注册监听事件
(14)btnRankList = (Button)findViewById(R.id.btnRankList); (15)btnRankList.setOnClickListener(this); (16)//游戏模式下拉
(17)spiGameModel = (Spinner)findViewById(R.id.spiGameModel);
(18)ArrayAdapter
(21)spiGameModel.setAdapter(adapter);
(22)spiGameModel.setOnItemSelectedListener(newSpinner.OnItemSelectedListener() {
(23)public void onItemSelected(AdapterView> arg0, View arg1, (24)int arg2, long arg3) { (25)//获取游戏模式
(26)gameModel = spiGameModel.getSelectedItem().toString(); (27)Log.i(TAG, \用户选择游戏模式[\(28)}
=
(29)public void onNothingSelected(AdapterView> arg0) { (30)} (31)}); (32)}
(33)//按钮事件处理
(34)public void onClick(View v) { (35)switch (v.getId()) { (36)case R.id.btnStartGame: (37)startGame(); (38)break;
(39)case R.id.btnRankList: (40)viewRank(); (41)break; (42)default: (43)break; (44)} (45)}
(46)//开始游戏
(47)private void startGame(){ (48)Log.i(TAG,\开始新游戏...\
(49)Log.i(TAG, \选择的游戏模式 >> \(50)Intent intent = new Intent();
(51)intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); (52)intent.setClass(AppActivity.this, MainActivity.class); (53)intent.putExtra(\(54)this.startActivity(intent); (55)} (56)}
2.程序主界面代码
(1)public class MainActivity extends Activity implements OnClickListener{
=
(2)private final static String TAG = \
(3)private GameService gameService = new GameServiceImpl(); (4)private Game game; //运行中的游戏 (5)//private boolean changedCard = false;
(6)//private CalculateThread calThread; //计算题目答案线程 (7)private AnswerTime ansTimeThread; //计时线程 (8)private ControlCountDownTimer cdTimer; //倒计时器 (9)private InitTask initGameTask; //初始化游戏任务 (10)private CalculateTask calTask; //计算答案任务 (11)private ImageView firstCard; //第一张卡 (12)private ImageView secondCard;//第二张卡 (13)private ImageView thirdCard; //第三张卡 (14)private ImageView fourCard; //第四张卡 (15)private Button btnClear; //清空 (16)private Button btnSubmit; //确定 (17)private Button btnAnswer; //查看答案 (18)private Button btnNoAnswer; //无答案 (19)private Button btnNextSub; //下一题 (20)private Button btnFirstNum; //第一个随机数 (21)private Button btnSecondNum;//第二个随机数 (22)private Button btnThirdNum; //第三个随机数 (23)private Button btnFourNum; //第四个随机数 (24)private Button btnLeftBracket; //运算符左括号 (25)private Button btnRightBracket; //运算符右括号 (26)private Button btnAdd; //运算符加号 (27)private Button btnSubtract; //运算符减号 (28)private Button btnMultiply; //运算符乘号 (29)private Button btnDivide; //运算符除号
(30)private TableRow trRemainTime; //剩余时间行(控制其是否可见) (31)private TextView remainTime; //时间模式倒计时
=
(32)private TableRow trRemainSub; //剩余题目行(控制其是否可见) (33)private TextView remainSubject; //题目模式剩余题数 (34)private TextView wasteTime; //耗时 (35)private TextView rightSubject; //做对题数 (36)private TextView errorSubject; //做错题数 (37)private EditText inputExp; //表达式输入框
(38)private ProgressDialog progressDialog;//等待进度对话框 3.程序算法代码:
public class TwentyFour {
private static List
int[] nums = new int[]{v[0],v[1],v[2],v[3]}; evaluate(nums); return exps; }
private static void evaluate(int[] v){ for(int a=0;a<4;a++){ for(int b=0;b<4;b++){ if (a==b) continue; for (int c=0;c<4;c++){ if (a==c||b==c) continue; for (int d=0;d<4;d++){
if (a==d || b==d || c==d ) continue; check(v,new int[]{a,b,c,d}); } } } }