android全屏程序启动画面

android程序启动画面

 

方法一:

很多应用都会有一个启动界面。欢迎画面慢慢隐现,然后慢慢消隐。实现这种效果的方法有两种(暂时只发现两种)
1、使用两个Activity,程序启动时候load第一张Activity,然后由tick触发N秒钟后startActivity另外一张Activity。
2、使用一个Activity,可以用到View.gone() 这个方法。把Acitivity的某些元素移除。

1、两个Activity:
首先是AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.sunshine.splash"
      android:versionCode="1"
      android:versionName="1.0"&gt;
    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name=".Splash"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN"/>
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    <activity android:name="Main">
    </activity>
</application>
    <uses-sdk android:minSdkVersion="3" />
</manifest>

然后是JAVA代码:

package net.hlovey.splash;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Handler;
 
public class Splash extends Activity {   
 
    private final int SPLASH_DISPLAY_LENGHT = 3000; //延迟三秒 
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash);
        new Handler().postDelayed(new Runnable(){
 
         @Override
         public void run() {
             Intent mainIntent = new Intent(Splash.this,Main.class);
             Splash.this.startActivity(mainIntent);
                 Splash.this.finish();
         }
           
        }, SPLASH_DISPLAY_LENGHT);
    }
}

加载后使用Handler的postDelayed方法,2秒后执行跳转到主视图。

当然可以再Splash中加入动画效果。(我觉得先要布局好AndroidManifest.xml。因为那才是工程的索引文件。首先在那要有一个统筹!而不是先写java code。然后逐步往xml中增加 ,这说明对整个项目没有一个统筹的设计)

方法二:

在原来的工作layout上增加一个全屏的LinearLayout,注意,原来的工作界面跟在下面,原来怎样就怎样,一段时间后,隐藏这个全屏的LinearLayout,工作界面就自然而然显示出来了。

public class MyActivity extends Activity implements Runnable {
   
    private boolean isOver=false;
    private LinearLayout screenup;
    Handler handler=new Handler(){

        @Override
        public void handleMessage(Message msg) {
            // TODO Auto-generated method stub
            switch(msg.what){
            case 0:
                //隐藏启动的View
                screenup.setVisibility(View.GONE);
                //取消全屏
                getWindow().clearFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN);
                
                break;
            case 1:
                Toast.makeText(getApplicationContext(), "加载中", Toast.LENGTH_SHORT).show();
                break;
            }
            super.handleMessage(msg);
        }
        
    };
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
       
        getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
                WindowManager.LayoutParams.FLAG_FULLSCREEN);
         
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        setContentView(R.layout.main);
        screenup=(LinearLayout)findViewById(R.id.screenup);
        new Thread(this).start();
        
    }
    private void show(){
        Message msg=new Message();
        if(isOver){
            msg.what=0;
            handler.sendMessage(msg);
        }else{
            msg.what=1;
            handler.sendMessage(msg);
        }
    }
    @Override
    public void run() {
        // TODO Auto-generated method stub
        //加载数据。。。。。。。。此处没有数据加载,延时2秒
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }
            isOver=true;
            show();
            
        }
    }

猜你喜欢

转载自l62s.iteye.com/blog/1663053