• android 之 启动画面的两种方法


    现在,当我们打开任意的一个app时,其中的大部分都会显示一个启动界面,展示本公司的logo和当前的版本,有的则直接把广告放到了上面。启动画面的可以分为两种设置方式:一种是两个Activity实现和一个Ativity实现。下面介绍两种设置启动画面的方式:

    一:两个Activity源代码:

    import android.app.Activity;
    import android.content.Intent;
    import android.os.Bundle;
    import android.os.Handler;
    import android.view.Window;
    
    public class SplashActivity extends Activity{
        
        private static int SPLASH_DISPLAY_LENGHT= 6000;    //延迟6秒
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            
            getWindow().requestFeature(Window.FEATURE_NO_TITLE);//去掉标题
            setContentView(R.layout.activity_splash);
            new Handler().postDelayed(new Runnable() {
                public void run() {
                    Intent intent = new Intent(SplashActivity.this, MainActivity.class);
                    startActivity(intent);
                    SplashActivity.this.finish();   //关闭splashActivity,将其回收,否则按返回键会返回此界面
                }
            }, SPLASH_DISPLAY_LENGHT);
        }
        
    }

    别忘设置AndroidManifest.xml

            <activity 
                android:name="com.example.andorid_splash_0.SplashActivity"
                android:label="splash">
                <intent-filter>
                    <action android:name="android.intent.action.MAIN" />
                    <category android:name="android.intent.category.LAUNCHER" />
                </intent-filter>            
            </activity>
            <activity
                android:name=".MainActivity"
                android:label="@string/app_name" >
            </activity>

    容易看出:SplashActivity是先于MainActivity之前启动,当过了6秒后,才启动MainActivity。

    补充一点知识:

    //  立即执行Runnable对象  
    public final boolean post(Runnable r);  
    //  在指定的时间(uptimeMillis)执行Runnable对象  
    public final boolean postAtTime(Runnable r, long uptimeMillis);  
    //  在指定的时间间隔(delayMillis)执行Runnable对象  
    public final boolean postDelayed(Runnable r, long delayMillis);

    二:一个Activity启动

    先看布局文件:里面放了两个充满屏幕的ImageView和TextView

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent" 
        android:orientation="vertical">
    
        <LinearLayout 
            android:id="@+id/splashScreen"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
            <ImageView 
                android:id="@+id/iv_image"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:src="@drawable/new00"/>
        </LinearLayout>
    
        <TextView 
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:textSize="100dp"
            android:gravity="center"
            android:text="主界面"/>
    </LinearLayout>

    activity的代码:

    import android.app.Activity;
    import android.os.Bundle;
    import android.os.Handler;
    import android.os.Message;
    import android.os.SystemClock;
    import android.view.View;
    import android.widget.ImageView;
    import android.widget.LinearLayout;
    
    public class MainActivity extends Activity {
        
        private LinearLayout splash;
        private ImageView iv_image;
        
        private static final int STOPSPLASH = 0;
        private static final long SPLASHTIME = 1000;
        
        private Handler splashHandler = new Handler(){
            public void handleMessage(Message msg){
                switch (msg.what){
                case STOPSPLASH:
                    SystemClock.sleep(4000);   //休眠4s
                    splash.setVisibility(View.GONE);
                    break;
                }
                super.handleMessage(msg);
            }
        };
        
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            splash = (LinearLayout) findViewById(R.id.splashScreen);
            
            Message msg = new Message();
            msg.what = STOPSPLASH;
            splashHandler.sendMessageDelayed(msg, SPLASHTIME);//设置在SPLASHTIME时间后,发送消息
        }
    }

    三、总结:

    上面两种方法都可以实现应用启动前的开机画面,但在实际开发中还是建议使用第一种较好,因为主界面的代码不宜过多,应当简洁。

  • 相关阅读:
    HIVE高级(14):优化(14) Hive On Spark配置
    HIVE高级(13):优化(13) Hive Job 优化
    HIVE高级(12):优化(12) 数据倾斜
    HIVE高级(11):优化(11) HQL 语法优化(2) 多表优化
    HIVE高级(10):优化(10) HQL 语法优化(1) 单表优化
    HIVE高级(9):优化(9) Hive 建表优化(1) 分区表/分桶表/合适的文件格式/合适的压缩格式
    HIVE高级(8):优化(8) Explain 查看执行计划(二)
    Hive基础(19):Hive 函数(2) 自定义函数/自定义 UDF 函数/自定义 UDTF 函数
    Hive基础(18):Hive语法(5) DDL(2) 分区表和分桶表
    MATLAB RGB2HSV、HSV2RGB
  • 原文地址:https://www.cnblogs.com/mercuryli/p/5313379.html
Copyright © 2020-2023  润新知