1. 程式人生 > >Android開發本地及網路Mp3音樂播放器(二)SplashActivity(歡迎介面)

Android開發本地及網路Mp3音樂播放器(二)SplashActivity(歡迎介面)

SplashActivity(歡迎介面)

實現功能:

修改背景圖片

通過java修改歡迎介面文字資訊

在xml中增加文字陰影

實現6秒自動跳轉到MainActivity

實現點選Button跳轉到MainActivity

以上2種跳轉方法不衝突

(以上2種跳轉方法不衝突,

也可以單獨看這裡 ,

通過按鈕跳過SplashActivity(啟動畫面),延時自動跳過SplashActivity進入MainActivity 


SplashActivity.java 如下:

package com.iwanghang.drmplayer;

import android.annotation.SuppressLint;
import android.app.Activity;
import android.content.Intent;
import android.os.Message;
import android.os.Bundle;
import android.os.Handler;
import android.text.Html;
import android.view.View;
import android.view.Window;
import android.widget.Button;
import android.widget.TextView;

/**
 * An example full-screen activity that shows and hides the system UI (i.e.
 * status bar and navigation/system bar) with user interaction.
 */

//public class SplashActivity extends AppCompatActivity {
public class SplashActivity extends Activity {


    private static final int START_ACTIVITY = 0x1;
    private boolean InMainActivity = false;//布林值標記是否已經進入MainActivity


    /**
     * Whether or not the system UI should be auto-hidden after
     * {@link #AUTO_HIDE_DELAY_MILLIS} milliseconds.
     */
    private static final boolean AUTO_HIDE = true;

    /**
     * If {@link #AUTO_HIDE} is set, the number of milliseconds to wait after
     * user interaction before hiding the system UI.
     */
    private static final int AUTO_HIDE_DELAY_MILLIS = 3000;

    /**
     * Some older devices needs a small delay between UI widget updates
     * and a change of the status and navigation bar.
     */
    private static final int UI_ANIMATION_DELAY = 300;
    private final Handler mHideHandler = new Handler();
    private View mContentView;
    private final Runnable mHidePart2Runnable = new Runnable() {
        @SuppressLint("InlinedApi")
        @Override
        public void run() {
            // Delayed removal of status and navigation bar

            // Note that some of these constants are new as of API 16 (Jelly Bean)
            // and API 19 (KitKat). It is safe to use them, as they are inlined
            // at compile-time and do nothing on earlier devices.
            mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LOW_PROFILE
                    | View.SYSTEM_UI_FLAG_FULLSCREEN
                    | View.SYSTEM_UI_FLAG_LAYOUT_STABLE
                    | View.SYSTEM_UI_FLAG_IMMERSIVE_STICKY
                    | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION
                    | View.SYSTEM_UI_FLAG_HIDE_NAVIGATION);
        }
    };
//    private View mControlsView;
//    private final Runnable mShowPart2Runnable = new Runnable() {
//        @Override
//        public void run() {
//            // Delayed display of UI elements
//            ActionBar actionBar = getSupportActionBar();
//            if (actionBar != null) {
//                actionBar.show();
//            }
//            mControlsView.setVisibility(View.VISIBLE);
//        }
//    };
//    private boolean mVisible;
//    private final Runnable mHideRunnable = new Runnable() {
//        @Override
//        public void run() {
//            hide();
//        }
//    };
    /**
     * Touch listener to use for in-layout UI controls to delay hiding the
     * system UI. This is to prevent the jarring behavior of controls going away
     * while interacting with activity UI.
     */
//    private final View.OnTouchListener mDelayHideTouchListener = new View.OnTouchListener() {
//        @Override
//        public boolean onTouch(View view, MotionEvent motionEvent) {
//            if (AUTO_HIDE) {
//                delayedHide(AUTO_HIDE_DELAY_MILLIS);
//            }
//            return false;
//        }
//    };

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //在SplashActivity中:
        //隱藏標題欄即應用程式的名字
        requestWindowFeature(Window.FEATURE_NO_TITLE);
        //隱藏狀態列:電池狀況,訊號等
        //getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,WindowManager.LayoutParams.FLAG_FULLSCREEN);
        //設定顯示View物件;
        //setContentView(R.layout.activity_splash);
        setContentView(R.layout.activity_splash);

//        mVisible = true;
//        mControlsView = findViewById(R.id.fullscreen_content_controls);
//        mContentView = findViewById(R.id.fullscreen_content);


        // Set up the user interaction to manually show or hide the system UI.
//        mContentView.setOnClickListener(new View.OnClickListener() {
//            @Override
//            public void onClick(View view) {
//                toggle();
//            }
//        });

        // Upon interacting with UI controls, delay any scheduled hide()
        // operations to prevent the jarring behavior of controls going away
        // while interacting with the UI.

        //findViewById(R.id.dummy_button).setOnTouchListener(mDelayHideTouchListener);
//        findViewById(R.id.InMainActivity_button).setOnTouchListener(mDelayHideTouchListener);


        //字型設定
        TextView tv = (TextView)findViewById(R.id.fullscreen_content);
        //AssetManager mgr = getAssets();//得到AssetManager
        //Typeface tf = Typeface.createFromAsset(mgr, "fonts/mini.TTF");//根據路徑得到Typeface
        //tv.setTypeface(tf);//設定字型
        String textStr1 = "<font color=\"#ffff00\">歡迎來到,</font><br>";
        String textStr2 = "<font color=\"#00ff00\">音樂之聲,</font><br>";
        String textStr3 = "<font color=\"#ff00ff\">乘著夢想,</font><br>";
        String textStr4 = "<font color=\"#00ffff\">飛向那個音符<br>的<br>海洋……</font><br>";
        tv.setText(Html.fromHtml(textStr1+textStr2+textStr3+textStr4));
        //在xml設定陰影
        //android:shadowColor="#000000"
        //android:shadowDx="15.0"
        //android:shadowDy="5.0"
        //android:shadowRadius=“5.0"

        //通過button進入MainActivity
        Button button = (Button) findViewById(R.id.InMainActivity_button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                InMainActivity = true;
                startActivity(new Intent(SplashActivity.this,MainActivity.class));
                finish();
            }
        });


        //延時自動進入MainActivity
        handler.sendEmptyMessageDelayed(START_ACTIVITY,6000);




    }

    //延時自動進入MainActivity
    private Handler handler = new Handler(){
        @Override
        public void handleMessage(Message msg) {
            System.out.println("SplashActivity.java : InMainActivity = " + InMainActivity);
            //如果InMainActivity == false,則進入MainActivity,為了避免重複進入MainActivity
            if (InMainActivity == false) {
                super.handleMessage(msg);
                switch (msg.what) {
                    case START_ACTIVITY:
                        startActivity(new Intent(SplashActivity.this, MainActivity.class));
                        finish();
                        break;
                }
            }
        }
    };










//    @Override
//    protected void onPostCreate(Bundle savedInstanceState) {
//        super.onPostCreate(savedInstanceState);
//
//        // Trigger the initial hide() shortly after the activity has been
//        // created, to briefly hint to the user that UI controls
//        // are available.
//        delayedHide(100);
//    }

//    private void toggle() {
//        if (mVisible) {
//            hide();
//        } else {
//            show();
//        }
//    }

//    private void hide() {
//        // Hide UI first
//        ActionBar actionBar = getSupportActionBar();
//        if (actionBar != null) {
//            actionBar.hide();
//        }
//        mControlsView.setVisibility(View.GONE);
//        mVisible = false;
//
//        // Schedule a runnable to remove the status and navigation bar after a delay
//        mHideHandler.removeCallbacks(mShowPart2Runnable);
//        mHideHandler.postDelayed(mHidePart2Runnable, UI_ANIMATION_DELAY);
//    }

//    @SuppressLint("InlinedApi")
//    private void show() {
//        // Show the system bar
//        mContentView.setSystemUiVisibility(View.SYSTEM_UI_FLAG_LAYOUT_FULLSCREEN
//                | View.SYSTEM_UI_FLAG_LAYOUT_HIDE_NAVIGATION);
//        mVisible = true;
//
//        // Schedule a runnable to display UI elements after a delay
//        mHideHandler.removeCallbacks(mHidePart2Runnable);
//        mHideHandler.postDelayed(mShowPart2Runnable, UI_ANIMATION_DELAY);
//    }

    /**
     * Schedules a call to hide() in [delay] milliseconds, canceling any
     * previously scheduled calls.
     */
//    private void delayedHide(int delayMillis) {
//        mHideHandler.removeCallbacks(mHideRunnable);
//        mHideHandler.postDelayed(mHideRunnable, delayMillis);
//    }
}

activity_splash.xml 如下:
<FrameLayout 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:background="#0099cc"
    tools:context="com.iwanghang.drmplayer.SplashActivity"
    >

    <!-- The primary full-screen view. This can be replaced with whatever view
         is needed to present your content, e.g. VideoView, SurfaceView,
         TextureView, etc. -->
    <TextView
        android:id="@+id/fullscreen_content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:keepScreenOn="true"
        android:text="@string/dummy_content"
        android:textColor="#33b5e5"
        android:background="@mipmap/app_splash_bg"

        android:textSize="50sp"
        android:textStyle="bold"

        android:shadowColor="#000000"
        android:shadowDx="15.0"
        android:shadowDy="5.0"
        android:shadowRadius="5.0"
        />

    <!-- This FrameLayout insets its children based on system windows using
         android:fitsSystemWindows. -->
    <FrameLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:fitsSystemWindows="true">

        <LinearLayout
            android:id="@+id/fullscreen_content_controls"
            style="?metaButtonBarStyle"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_gravity="bottom|center_horizontal"
            android:background="@color/black_overlay"
            android:orientation="horizontal"
            tools:ignore="UselessParent">

            <Button
                android:id="@+id/InMainActivity_button"
                style="?metaButtonBarButtonStyle"
                android:layout_width="0dp"
                android:layout_height="wrap_content"
                android:layout_weight="1"
                android:text="@string/dummy_button"
                android:textColor="@color/colorAccent"/>

        </LinearLayout>
    </FrameLayout>

</FrameLayout><span id="transmark"></span>