许多应用都有一个欢迎界面,一般是图片或者动画,下面来说一下如何制作一个最简单的用图片作为欢迎键面的列子:
我们要实现以下几个效果:
1.启动时自动全屏展示,中间无卡顿现象
2.停留几秒后跳到其他主页面
3.按返回键时不能再到欢迎页面
现在的人都不喜欢说真话,在网上查了很多,要全屏展示一个布局,大部分给的答案都是这样的:
public class LuancherActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//去除title
requestWindowFeature(Window.FEATURE_NO_TITLE);
//去掉Activity上面的状态栏
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_luancher);
}
然后你会惊奇的发现,在加载布局时它会一卡,就是启动时是有状态栏和标题栏的,然后瞬间才全屏,这样显然不是我们想要的,那么我们如何来做呢?现在你估计会想到AndroidMenifest.xml文件,没错就是它,我们一定要在创建这个Activity时就要指定它是全屏的,在AndroidMenifest.xml中,在activity内添加一个主题,如下:
<activity
android:name=".LuancherActivity"
android:theme="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
这样,我们第一个效果就实现了
第二个效果相信大家都会,但是切记不要这样干:
public class LuancherActivity extends Activity{
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_luancher);
try {
Thread.sleep(3000);
Intent intent =new Intent(LuancherActivity.this,LoginActivity.class);
startActivity(intent);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
许多新手就是这样做的,在加载布局后让线程休眠一会再跳转,然后你又会发现欢迎界面是空白的,然后过一会之后跳到了其它界面,正确的做法如下:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_luancher);
new Handler().postDelayed(new Runnable() {
public void run() {
Intent intent = new Intent(LuancherActivity.this,LoginActivity.class);
startActivity(intent);
}
}, 3000);
}
这个相信大家都知道,只是对于新手要注意一下细节
第三个就是处理返回的问题,作为一个新手,有时候我也很困惑,比如我到了LoginActivity界面,我想按返回键直接退出,不要有回到欢迎界面,网上一大堆方法:
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if(keyCode==KeyEvent.KEYCODE_BACK){
finish();
}
return true;
}
或者:
@Override
public void onBackPressed() {
finish();
// super.onBackPressed();
}
然而每次尝试,都会返回欢迎界面,试了很多次,发现漏了一个细节:
就是在LuancherActivity中,在启动后要把他finish()掉,这很重要:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_luancher);
new Handler().postDelayed(new Runnable() {
public void run() {
Intent intent = new Intent(LuancherActivity.this,LoginActivity.class);
startActivity(intent);
finish();
}
}, 3000);
}
以上就是我的简单总结,没什么技术含量,都是一些细节问题,希望对新手们有用