• android启动第一个界面时即闪屏的核心代码(两种方式)


    闪屏,就是SplashScreen,也能够说是启动画面,就是启动的时候,闪(展示)一下,持续数秒后。自己主动关闭。


       第一种方式:

    android的实现很easy,使用Handler对象的postDelayed方法就能够实现。在这种方法里传递一个Runnable对象和一个延迟的时间。该方法实现了一个延迟运行的效果,延迟的时间由第2个參数指定。单位是毫秒。

    第一个參数是Runnable对象,里面包括了延迟后须要运行的操作。

    详细的实现步骤为:

    1.实现一个闪屏窗口。设置背景图片等。



    2.实现主窗口,当闪屏结束后会启动该窗口。

    2.在闪屏窗口里的onCreate方法重载里。处理一个延迟运行页面跳转的操作。方法如上面的代码所看到的。

    在这里跳转到程序的主窗口。


    这里仅仅给出核心代码。ui非常easy就不给了

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.view.Menu;
    
    public class StarActivity extends Activity {
    
    	@Override
    	protected void onCreate(Bundle savedInstanceState) {
    		super.onCreate(savedInstanceState);
    		setContentView(R.layout.activity_star);
    
    		// 闪屏的核心代码
    		new Handler().postDelayed(new Runnable() {
    			@Override
    			public void run() {
    				Intent intent = new Intent(StarActivity.this,
    						MainActivity.class); // 从启动动画ui跳转到主ui
    				startActivity(intent);
    				overridePendingTransition(R.anim.in_from_right,
    						R.anim.out_to_left);
    				StarActivity.this.finish(); // 结束启动动画界面
    
    			}
    		}, 4000); // 启动动画持续3秒钟
    	}
    
    }


    另外一种方式:

    通过AlphaAnimation 动画。窗体的动画效果。淡入淡出,有些游戏的欢迎动画。logo的淡入淡出效果就使用AlphaAnimation。 

    【基本的语法】public AlphaAnimation (float fromAlpha, float toAlpha)

    fromAlpha:開始时刻的透明度,取值范围0~1。
    toAlpha:结束时刻的透明度,取值范围0~1。

    public class SplashActivity extends Activity
    {
            private TextView tv_version;
            private LinearLayout ll;
            private ProgressDialog progressDialog;
            
            private UpdateInfo info;
            private String version;
            
            private static final String TAG = "Security";
            
            private Handler handler = new Handler()
            {
                    public void handleMessage(Message msg) 
                    {
                            if(isNeedUpdate(version))
                            {
                                    showUpdateDialog();
                            }
                    };
            };
            
            @Override
            protected void onCreate(Bundle savedInstanceState)
            {
                    super.onCreate(savedInstanceState);
                    requestWindowFeature(Window.FEATURE_NO_TITLE);
                    setContentView(R.layout.splash);
                    getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
                    
                    tv_version = (TextView) findViewById(R.id.tv_splash_version);
                    version = getVersion();
                    tv_version.setText("版本  " + version);
                    
                    ll = (LinearLayout) findViewById(R.id.ll_splash_main);
                    AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
                    alphaAnimation.setDuration(2000);
                    ll.startAnimation(alphaAnimation);
                    
                    progressDialog = new ProgressDialog(this);
                    progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
                    progressDialog.setMessage("正在下载...");
                    
                    new Thread()
                    {
                            public void run() 
                            {
                                    try
                                    {
                                            sleep(3000);
                                            handler.sendEmptyMessage(0);
                                    }
                                    catch (InterruptedException e)
                                    {
                                            e.printStackTrace();
                                    }
                            };
                    }.start();
                    
            }
            


    事实上在启动界面会包含非常多操作的,比方,获取应用的版本,以及提醒是否更新,等等操作。这里也仅仅给出简单的核心代码。一般也是非常easy理解的。


    上述代码仅仅是简单的给出了一些操作,详细的实现没有给出,比方版本,以及更新操作,下载操作等。

    假设没有上述的一些操作,仅仅要注意例如以下代码就可以。


     ll = (LinearLayout) findViewById(R.id.ll_splash_main);
         AlphaAnimation alphaAnimation = new AlphaAnimation(0.0f, 1.0f);
         alphaAnimation.setDuration(2000);
         ll.startAnimation(alphaAnimation);



  • 相关阅读:
    演示stop暴力停止线程导致数据不一致的问题,但是有些有趣的发现 (2017-07-03 21:25)
    Fragment的startActivityForResult和Activity的startActivityForResult的区别
    Maven实战(七)settings.xml相关配置
    vue-cli脚手架引入element UI的正确打开方式
    node起server--axios做前端请求----进行CORS--跨域请求
    ES6 promise简单实现
    实现一个简单的订阅与发布模式的代码块,和redux
    git使用笔记
    用yeoman搭建react画廊项目笔记
    npm包管理器小节一下
  • 原文地址:https://www.cnblogs.com/cynchanpin/p/7085117.html
Copyright © 2020-2023  润新知