刚刚开始自学Android,照着书上的例子进行练习,发现一个不足之处,那就是几乎所有的例程在模拟器上运行的时候都是“直奔主题”,不像我们真正使用的App那样有个美观的启动画面,于是就在网上查了下资料,综合学习了一下,做出了想要的效果。下面是我在做的过程中的一些总结,写下来供大家参考,互相交流学习。
首先,要感谢 http://blog.youkuaiyun.com/wangjinyu501/article/details/7643396 这篇文章的作者,里面讲解得非常好!菜鸟我就是在其指导下达到了预期的目的。文章里面讲了2种方法,我所用的是作者推荐 的第一种方法,即 两个Activity,通过线程延迟指定的时间再执行Activity的跳转 。
下面是我在实际做的过程中总结的几个文章里面没有详细说明和值得注意的地方:
1.关于SplashActivity(启动界面的Activity)的布局配置文件
这里我做的是一个非常简单效果,就是在程序启动的时候显示一张图片。我用的最简单有效地方法,就是使用ImageView控件。关于ImageView控件的用法就不再赘述了,这里指的关注的是它的
android:scaleType属性,关于这个可以参考http://www.cnblogs.com/yejiurui/archive/2013/02/25/2931767.html这篇文章。
2.关于全屏显示的问题
我们可以发现,大多数的App在启动的时候,都是全屏的,而我在模拟器上运行例程时,上面总是有状态栏和标题栏。下面就是解决这个问题的方法,要达到全屏显示的效果,其实非常简单,只需两步:
(1)
隐去标题栏(App名称);
(2) 隐去状态栏(电池等一些图标,即通知栏);
以上每步只需一行代码,
//隐去标题栏
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//隐去隐去状态栏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
这里有一个细的注意的地方就是这两行代码的位置,通过做的过程和参考其他人的做法,似乎
只有将这两行代码放在
super.onCreate(savedInstanceState);
和
setContentView(R.layout.XXX);
之间才行
(原因不知道,查了半天也没有头绪,都是别人的经验)。
下面就各一个比较完整的程序:
public class SplashActiity extends Activity{
private final int SPLASH_DISPLAY_LENGTH = 5000; //延时5秒
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
//隐去标题栏
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
//隐去状态栏
this.getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.splash);
new Handler().postDelayed(new Runnable(){
public void run(){
Intent mainIntent = new Intent(SplashActiity.this,MainActivity.class);
SplashActiity.this.startActivity(mainIntent); //启动MainActivity
SplashActiity.this.finish(); //结束SplashActivity
}
}, SPLASH_DISPLAY_LENGTH);
}
}事实上添加的这两行代码,是功能相互独立的。可以根据需要,将其放在任意的Activity里,实现各自的作用,比如说,要某个Activity只隐去标题栏(我发现大多数App都是这样的)而保留状态栏,那就只要第一行代码就可以了!