Andriod 如何写欢迎界面

许多应用都有一个欢迎界面,一般是图片或者动画,下面来说一下如何制作一个最简单的用图片作为欢迎键面的列子:
我们要实现以下几个效果:
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);
    }

以上就是我的简单总结,没什么技术含量,都是一些细节问题,希望对新手们有用

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值