【原创Android游戏】NinOne V2.3.1 --加载模式的学习,界面的重新设计

上次更新后又发现了一些bug,而且是非常明显的bug,一一加以改正了过来。

猜数字游戏的功能已基本实现,不过我觉得一个应用单做一个游戏有点不太过瘾,略显单调,于是我打算基于这个,写一个n合1的游戏集成应用,一个应用集成多款游戏,这样就可以通过一个应用想玩什么游戏就玩什么游戏了,虽然可能只会实现一些简单游戏,但是反正是自己写着玩嘛,有兴趣就有动力,嘿嘿。

---------------------------------------------------------------------------------------------------------

本次更新:

1.修正了应用程序安装生成两个图标的问题
2.修正了Activity加载模式
3.游戏最终主界面的设计4.游戏更名

---------------------------------------------------------------------------------------------------------

1.修正了应用程序安装生成两个图标的问题。

如图,在安装应用程序后出现了两个应用图标。

由于AndroidManifest.xml中两个Activity中都包含了<action android:name="android.intent.action.MAIN" />, 即有两个主进程,所以会产生两个应用图标,将RankActivity的这条语句删去,就成功解决了这个问题。

2.修正了Activity加载模式

软件的另一个bug在于,如果不断地在两个Activity之间切换,那么在多次以后,按MainActivity中的退出是不会马上退出程序的,而是不断地退到MainActivity,然后很多次以后才会退出程序,这是Activity加载模式的问题。

首先我们来了解一下Android Activity的四种加载模式:

1.stantard:  标准模式。

默认加载模式,每次通过此模式来启动目标Activity时,都会创建一个新的实例,并将该Activity加入到Task栈中(Task栈是用来管理Activity的)。

刚开始我用的就是默认的stantard模式,导致每次按下排行键,就会创建一个RankActivity的实例,并放到Task栈顶,转入RankActivity时并不销毁MainAcitvity,然后在排行榜里面按下返回键时,又重新创建一个MainActivity的实例,放到栈顶,RankActivity每次都会销毁,所以多次在Activity间切换时,实际上栈中的Activity越来越多,而且都是MainActivity,这就解释了为什么在MainActivity中按退出还是会到MainActivity,因为它在一层一层地出栈。

2.singleTop: Task顶单例模式

与standard模式基本相同,唯一的不同就是: 当将要启动的目标Activity已经在栈顶时,不再新建该Activity的实例,而是直接服用栈顶已有Activity。即“栈顶元素相同的只能有一个”,就是singleTop的意思。‘

3.singleTask: Task内单例模式

即在同一个Task内只能有一个实例,即只有一个Task,且Task内只能有一个相同的实例。

如果将要启动的目标Activity:

(1)不存在,那么创建实例,并放到Task栈顶

(2)已经位于Task栈顶,那么处理同singleTop

(3)已经存在,但是没在栈顶,那么把它上面的实例删去,让它成为栈顶。

4.singleInstance:全局单例模式

采用此种模式,系统保证无论从哪个Task启动目标Activity,只会创建一个该Activity实例,并会建一个全新的Task来存储该实例。

即: 每次目标Activity如果不存在,那么创建一个Task,将其放到Task栈顶,然后如果存在,那么把该Task放到前台即可。 这种方式每个Task中只会有一个实例。

--------------------------------------------

经过三种实验:

1.直接在MainActivity中加finish(),每次跳转都结束自己。

2.采用singleTask模式。

3.采用singleInstance模式。

第一种的话,无法保存现场,导致每次猜数字中途去看排行都会清除掉这次猜的情况,即无法保存现场。 第三种虽然能保护现场,但是跳转时间隔时间太长,不符合这种小应用,我不希望这种小应用在任何一个地方延迟过多时间。所以,我决定用singleTask模式来处理和加载两个Activity,并且在调转时先不写入数据。这样的话,跳回来时可以继续接着玩。

---------------------------------------------------------------------------------------------------------

3.游戏最终主界面的设计

在网上找图,自己P按钮都用了好久,虽然按钮设计地有点丑,但是目前就这样吧。

然后就是调整MainActivity,加ImageButton,实现Activity间的切换等,按部就班地完成了。

先来看看主界面 ( 求轻喷 ):

然后是登录界面,本来是想一并做成对话框形式,但是还有一些问题,导致没能实现,下次估计就能实现了。

点击"猜数字游戏"就进到猜数字游戏的主界面,目前来讲,这是本应用的核心功能。。

点击"关于"可以得到软件信息,包括作者,版本等等。

4.游戏更名

游戏更名为NinOne,取n合1之意。

---------------------------------------------------------------------------------------------------------------

OK,这次代码就不贴了,下一步应该好好研究下Git的使用,将代码传到github上管理好一点,总不能每次一个一个地贴啊。

本来这一次要实现数据库的应用的,但是考虑到应用有所变化,等以后可能会实现一个游戏的全局数据库,所以数据库先搁置一下。

下一步的话,先搞好Git,然后就应该好好想一下全局的架构设计了,一个猜数字游戏好说,就是无脑写算法,然后放到一个Activity中即可,但是要实现多个游戏,就应该好好想想怎么去设计整个构成以及逻辑,以及数据库的设计等等了,不能只是埋头编码,更要抬头看路,我可不想写到最后发现整个逻辑混乱至极,就像写模拟题一样,写着写着自己都写晕了,然后就gg了。

----------------------------------------------------------------------------------------------------------------------------------

下一步:

Git的使用,上传代码以及全局的架构设计。

----------------------------------------------------------------------------------------------------------------

APK: 点我下载

2014.12.19

时间: 2024-10-10 01:37:52

【原创Android游戏】NinOne V2.3.1 --加载模式的学习,界面的重新设计的相关文章

Android四种Activity的加载模式(转)

建议首先阅读下面两篇文章,这样才可以更好的理解Activity的加载模式: Android的进程,线程模型: http://www.cnblogs.com/ghj1976/archive/2011/04/28/2031586.html 其中对“Android的单线程模型”的描述,明白Activity的一些注意事项. Android Application Task Activities的关系  http://www.cnblogs.com/ghj1976/archive/2011/04/29/2

android下拉刷新上拉加载简单的实现方法;

项目中需要用到android下拉刷新和上拉加载:所以学习了一个很简单的很方便的一个例子:自己也写过下拉刷新和上拉加载的功能:但是如果每个界面都要实现这个功能的话非常的麻烦:所以学习了别人很好的demo:然后分享一下: 我的学习步骤: 在网上下载demo:然后把必要的导入到项目中: 在此附上下载源码网址:http://download.csdn.net/detail/android_drawing/8596553 所有的源代码如下: XListViewFooter类 /** * @file XFo

android launchMode加载模式和intent flag

ApplicationTask和Process的区别与联系 Application task process 四种加载模式 standard模式 singleTop模式 singleTask模式 singleInstance模式 SingleTask和SingleInstance区别 实例 startActivityForResult如果被启动activity加载模式为SingleTask和SingleInstance 使用Intent标志 FLAG_ACTIVITY_NEW_TASK FLAG

LacunchMode:加载模式

LacunchMode:加载模式,用来管理Android四大组件Activitiy 1 Task:任务 为完成某一操作,所涉及的所有的Activity的集合(一组Activity,可以不来自同一个App) getTaskId();-->获取id(标志唯一) 2 BackStack:回退栈 存储并管理任务中所有的Activity的容器 作用:提高用户的体验,提高执行的效率 启动模式:清单文件AndroidManifest.xml中添加 <activity android:name="&

Android---33---四种加载模式

Android的四种加载模式: 首先在配置Activity时即可指定该Activity用哪种加载模式,通过android:launchMode属性. 四种加载模式: standard:标准模式,默认 singleTop:Task顶单例模式 singleTask:Task内单例模式 singleInstance:全局单例模式 Android是通过Task对Activity进行管理的,通过getTaskID()方法可以获得当前活动的Task的ID. 可以把Task理解成Activity栈,Task以

Android 下拉刷新上拉加载 多种应用场景 超级大放送(上)

转载请标明原文地址:http://blog.csdn.net/yalinfendou/article/details/47707017 关于Android下拉刷新上拉加载,网上的Demo太多太多了,这里不是介绍怎么去实现下拉刷新上拉加载,而是针对下拉刷新上拉加载常用的一些应用场景就行了一些总结,包含了下拉刷新上拉加载过程中遇到的一些手势冲突问题的解决方法(只能算是抛砖引玉). 去年9月的时候,那时自己正在独立做Android项目.记得刚刚写完那个ListView列表页面(木有下拉刷新,上拉加载)

Android App 启动时显示正在加载图片(源码)

微信.QQ.天天动听等程序,在打开时显示了一张图片,然后跳转到相关界面.本文实现这个功能,其实很简单.... 新建两个Activity,LoadingActivity,MainActivity,将LoadingActivity设置为android.intent.action.MAIN.使用TimerTesk,或者Thread将LoadingActivity显示几秒后跳转到MainActivity界面. LoadingActivity: new Timer().schedule(new Timer

Android动画Animation的两种加载执行方式

本文以简单的AlphaAnimation("淡入淡出(透明度改变)"动画)为例,简单的说明Android动画Animation的两种加载执行方法: (1) 直接写Java代码,制作Android动画. (2) 写XML配置文件,加载XML资源文件执行. 其实这两者是一致的.要知道,在Android中,凡是可以在XML文件完成的View,代码亦可完全写出来. 现在先给出一个Java代码完成的动画AlphaAnimation,AlphaAnimation功能简单,简言之,可以让一个View

Android插件化(三)加载插件apk中的Resource资源

Android加载插件apk中的Resource资源 简介 如何加载未安装apk中的资源文件呢?我们从android.content.res.AssetManager.java的源码中发现,它有一个私有方法addAssetPath,只需要将apk的路径作为参数传入,我们就可以获得对应的AssetsManager对象,然后我们就可以使用AssetsManager对象,创建一个Resources对象,然后就可以从Resource对象中访问apk中的资源了.总结如下: 1.新建一个AssetManag