zoukankan      html  css  js  c++  java
  • Android添加全屏启动画面

    有的Android软件需要在启动的时候显示一个启动画面,可以是一张图或者一些设置什么呢,还有一个好处就是,可以趁机在后台加载数据。

    创建启动画面一般有两种方式:
    1、建立一个activity,展示启动画面,然后再启动主Activity
    2、在主Activity建立一个展示区,然后隐藏掉。

    第二个其实更简单,但是这个就展示一次的东西戳在代码里,怎么想都不舒服,而且还可能设计效率问题。所以在项目里还是选用第一种。


    首先建立一个Activity,这里明明为HelloActivity,界面就是activity_hello.xml。

    接下来修改AndroidManifest.xml文件,把主Activity换成HelloActivity。把之前的主Activity放到下面。

    <activity
        android:name="com.phone.config.SetActivity"
        android:icon="@drawable/set"
        android:label="@string/app_name"
        android:screenOrientation="landscape"
        android:theme="@android:style/Theme.NoTitleBar.Fullscreen"
        android:windowSoftInputMode="adjustUnspecified|stateHidden" >
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <category android:name="android.intent.category.LAUNCHER" />
        </intent-filter>
    </activity>

     

    这样HelloActivity就优先启动了,在java文件中编写代码,启动完画面后启动主界面。

    在activity_hello.xml中就一个LinearLayout 和一个ImageView,界面很简单,但要保证他全屏,其实我们在设置文件里面已经设置了全屏,在java文件的onCreate方法里也可以设置:

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        //设置无标题
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //设置全屏
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
            WindowManager.LayoutParams.FLAG_FULLSCREEN);
        setContentView(R.layout.activity_hello);
        iv = (ImageView)this.findViewById(R.id.iv);
        timer = new Timer(true);
        timer.schedule(hello, 200, 150); //延迟200毫秒执行,每150毫秒执行一次
    }

     

    这里面用了一个Timer,用Timer是因为,我的项目启动画面是一个动态的,但是Android又不支持Gif图播放,但项目中就这个地方用到gif,所以就把gif给分割成jpg文件,然后用timer播放,播放完成后就加载新Activity。

    编写Timer的TimerTask类,重写run()方法就可以了。

    TimerTask hello = new TimerTask(){ 
        @Override
        public void run() {
            if(index &lt; 5){
                index++;
                Message msg = new Message();
                msg.what = index;
                handler.sendMessage(msg);
            }else if(index &lt; 8){
                index++;  //静止片刻
            }else{
                //停止播放,启动主Activity
                timer.cancel();
                Intent intent = new Intent(HelloActivity.this, MainActivity.class);
                startActivity(intent);
                finish();  //不加这一句,按回退键就会回到欢迎界面不合理。        }
        } 
    };

     

     

    这里还涉及到了一个消息处理,因为Android不允许随便让其他线程操作UI,但是处理系统消息的Handle却是可以得,所以Timer定时向Handle发送一个消息,用来更改界面。

    final Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            //循环播放图片
            iv.setBackgroundResource(hellores[msg.what]);
        }
    };

     

    这样,一个简单的启动画面就做好了。

    提示:在Android4.0版本中,这种方法无法隐藏系统的状态栏,需要修改底层代码。






  • 相关阅读:
    aws亚马逊配置 https,操作步骤记录
    八年phper的高级工程师面试之路八年phper的高级工程师面试之路
    laravel 获取目录下的所有目录Storage::directories
    Docker 入门看这一篇就够了,万字详解!
    PHP 引用是个坑,请慎用
    php面试常问方法汇总
    注册、登录和 token 的安全之道
    分享一下最近的面试题,都是大厂
    Xpath2
    ActiveX控件的实现
  • 原文地址:https://www.cnblogs.com/jeffen/p/6860784.html
Copyright © 2011-2022 走看看