Andriod 如何写欢迎界面

来源:互联网 发布:四川软件行业协会 编辑:程序博客网 时间:2024/05/24 05:10

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