Android開發本地及網路Mp3音樂播放器(二)SplashActivity(歡迎介面)
阿新 • • 發佈:2019-02-10
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>