Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於Android編程 >> Android UI常用實例 如何實現歡迎界面(Splash Screen)

Android UI常用實例 如何實現歡迎界面(Splash Screen)

編輯:關於Android編程

在Android平台下,下載一個應用後,首次打開映入眼簾的便是Splash Screen,暫且不說Android的設計原則提不提倡這種Splash Screen。先來看看一般使用Splash Screen的場景:

1,第一次安裝後,簡單APP的閃屏達到品牌營銷的目的,復雜點的APP用來提供新手指導;

2,版本更新,說明版本新特性;

有人對這種設計嗤之以鼻,有人趨之若鹜,孰好孰壞不在我們探討之列。

title=

1,簡單的Splash Screen

這種Splash Screen實現及其簡單,常用來顯示產品Logo或者版本號等簡單信息,我們只需要想辦法讓WelcomeActivity運行幾秒種後自動跳轉到應用主界面即可;

我們只需要用到一個簡單的方法:

//3s後,執行run方法啟動主界面Activity
    new Handler().postDelayed(new Runnable() {
            @Override
            public void run() {
                Intent i = new Intent(SplashScreen.this, MainActivity.class);
                startActivity(i);

                //啟動主Activity後銷毀自身
                finish();
            }
        }, 3000);

2,涉及復雜操作的Splash Screen

所謂復雜操作是因為往往這種應用在進入界面之前需要進行很多後台操作,通過Splash Screen讓用戶等待,一般涉及的操作有:

從網絡獲取數據並存儲到本地 下載圖片 獲取和解析JSON/XML等文件 發送數據到服務端 身份驗證 。。。。

反正一般都是類似於網路下載這樣的些耗時操作,但又不得不在應用進入主界面前需要做的工作。根據應用的不同,所做的工作也不同,這裡就以遠程獲取一張圖片,我們在進入歡迎界面後,開始從遠程下載一張圖片,完成後我們便進入主界面,將解析後的數據顯示在主界面;

圖片地址:: 創建SplashScreen布局: res/layout/splash_screen.xml

    
    


    

布局效果

title=

創建MainActivity布局:res/layout/activity_main.xml,僅僅用來顯示從遠程獲取的圖片
    

    

    

4.完成SplashScreenActivity,我們使用AsyncTask來執行獲取和解析數據,通過Intent將數據傳遞給MainActivity,

public class SplashScreenActivity extends Activity {
    private static final String url=http://www.jycoder.com/json/Image/1.jpg;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.splash_screen);

        /*
        * 簡單Splash Screen的實現
        * */

        /*
        * 3s後,執行run方法啟動主界面Activity
            new Handler().postDelayed(new Runnable() {
                @Override
                public void run() {
                    Intent i = new Intent(SplashScreen.this, MainActivity.class);
                    startActivity(i);

                    //啟動主Activity後銷毀自身
                    finish();
                }
            }, 3000);
        * */

        //在後台執行任務,傳入url
        new FetchDataTask().execute(url);
    }

    public class FetchDataTask extends AsyncTask{

        //執行前調用
        @Override
        protected void onPreExecute() {
            super.onPreExecute();
        }

        //執行後台任務
        @Override
        protected Bitmap doInBackground(String... strings) {
            Bitmap bitmap=null;
            try {
                //通過傳入的圖片地址,獲取圖片
                HttpURLConnection connection= (HttpURLConnection) (new URL(strings[0])).openConnection();
                InputStream is=connection.getInputStream();
                bitmap= BitmapFactory.decodeStream(is);

            } catch (IOException e) {
                e.printStackTrace();
            }
            return bitmap;
        }

        //任務完成時調用
        @Override
        protected void onPostExecute(Bitmap result) {
            super.onPostExecute(result);

            //將獲得的數據通過Intent傳送給MainActivity
            Intent intent=new Intent(SplashScreenActivity.this,MainActivity.class);
            //注意,intent傳遞圖片時,圖片對象大小不應該超過40K
            intent.putExtra(Image,result);
            startActivity(intent);

            //啟動MainActivity後銷毀自身
            finish();
        }
    }
}

5.完成MainActivity,這裡需要注意如何接受Intent傳遞的對象

 public class MainActivity extends Activity {

        private ImageView imageView;
        @Override
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        imageView= (ImageView) findViewById(R.id.image);

        Intent intent=getIntent();

        if(intent!=null){
        //注意Intent傳遞對象的方式
        Bitmap bitmap=intent.getParcelableExtra(Image);
        imageView.setImageBitmap(bitmap);
        }
    }
}

6.記得在Manifest.xml中增添聯網權限,將SplashScreenActivity設為啟動Activity




    
    
        
            
                

                
            
        
        
    


我第一次用我存儲在遠程的一張圖片的時候出錯了,遇到了一個很有意思的問題:

title=

後來發現這種錯誤是因為用Intent傳遞圖片時,大小不能超過40K,記住哦

完成後的效果:

title=

總結:

以上的例子都非常簡單,但基本上Splash Screen的思路無非這幾種,希望能對你有所幫助。

記得關注下方微信公眾平台~~~O(∩_∩)O哈哈~

 

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved