Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> Android開發實例 >> Android手機衛士(一):實現splash

Android手機衛士(一):實現splash

編輯:Android開發實例

  從今天開始根據之前學習的android的基礎知識,實戰一下,實現一個簡單功能的android手機衛士。

  手機衛士的主要功能如下:

Android手機衛士(一):實現splash

  什麼是Splash

  Splash也就是應用程序啟動之前先啟動一個畫面,上面簡單的介紹應用程序的廠商,廠商的LOGO,名稱和版本等信息,多為一張圖片,顯示幾秒鐘後會自動消息,然後顯示出應用程序的主體頁面。在PC上,很常見各種平台的應用程序都會有,多半是一張圖片顯示在屏幕中央,如Microsoft Office系列,或者GIMP等。在各種游戲中Splash是最常見的,幾乎所有的游戲開始都會有一張全屏的圖片,上面通常都顯示廠商的LOGO,游戲的名稱等。在手機平板等移動設備上,類似PC的Splash很少,起碼對於Android和iOS來講原生的應用程序都沒有這種Splash,但是不知從何時起,這種Splash開始在第三方應用中流行起來,幾乎所有的第三方應用程序都有啟動Splash。這些Splash的特點是占滿整個屏幕,上面LOGO,廠商的名字,應用的名字版本等,大約3到5秒後,Splash自動消失,應用主頁面顯示出來。很多應用在Splash頁面也顯示加載過程。

  使用Activity作為Splash

  這可能也是最常用的方式,方法就是用一個Activity,給它設置一個背景,或者要顯示的信息(廠商,LOGO,名字和版本),讓它顯示幾秒種,然後finish()掉,並啟動應用主體Activity。

  手機衛士的splash頁面初步如下:

Android手機衛士(一):實現splash

  splash布局

  相應的代碼在布局文件activity_splash.xml文件中:

XML/HTML代碼
  1. <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     xmlns:tools="http://schemas.android.com/tools"  
  3.     android:layout_width="match_parent"  
  4.     android:layout_height="match_parent"  
  5.     android:background="@drawable/launcher_bg"  
  6.     tools:context=".SplashActivity" >  
  7.   
  8.     <TextView  
  9.         android:id="@+id/tv_version_name"  
  10.         android:layout_width="wrap_content"  
  11.         android:layout_height="wrap_content"  
  12.         android:layout_centerInParent="true"  
  13.         android:shadowColor="#f00"  
  14.         android:shadowDx="1"  
  15.         android:shadowDy="1"  
  16.         android:shadowRadius="1"  
  17.         android:text="版本名"  
  18.         android:textColor="#fff"  
  19.         android:textSize="16sp" />  
  20.   
  21.     <ProgressBar  
  22.         android:layout_width="wrap_content"  
  23.         android:layout_height="wrap_content"  
  24.         android:layout_centerHorizontal="true"  
  25.         android:layout_below="@+id/tv_version_name" />  
  26.   
  27. </RelativeLayout>  

  Activity去頭操作&保留高版本主題

  接下來去掉頭部顯示的標題:mobilesafe

  方法1:在指定的activity中添加下面的代碼:

Java代碼
  1. public class SplashActivity extends Activity {  
  2.   
  3.     @Override  
  4.     protected void onCreate(Bundle savedInstanceState) {  
  5.         super.onCreate(savedInstanceState);  
  6.         //去掉當前actinity的tittle  
  7.         requestWindowFeature(Window.FEATURE_NO_TITLE);  
  8.         setContentView(R.layout.activity_splash);  
  9.           
  10.     }  
  11.       
  12. }  

  但是每一個activity都需要去配置,比較麻煩

  方法2:將清單文件中的 android:theme="@style/AppTheme"修改為:android:theme="@android:style/Theme.Light.NoTitleBar"

  可以達到效果,但是主題的其他樣式也發生了變化,為了兼容這兩方面,修改styles.xml,添加下面的代碼:

XML/HTML代碼
  1. <!-- Application theme. -->  
  2. <style name="AppTheme" parent="AppBaseTheme">  
  3.       
  4.     <!-- 在去頭的同時還保持高版本的樣式主題 -->  
  5.     <!-- All customizations that are NOT specific to a particular API-level can go here. -->  
  6.     <item name="android:windowNoTitle">true</item>  
  7. </style>  

  搞定

Android手機衛士(一):實現splash

  獲取版本名稱並且展示

Java代碼
  1. public class SplashActivity extends Activity {  
  2.   
  3.     private TextView tv_version_name;  
  4.   
  5.     @Override  
  6.     protected void onCreate(Bundle savedInstanceState) {  
  7.         super.onCreate(savedInstanceState);  
  8.         // 去掉當前actinity的tittle  
  9.         // requestWindowFeature(Window.FEATURE_NO_TITLE);  
  10.         setContentView(R.layout.activity_splash);  
  11.   
  12.         // 初始化UI  
  13.         initUI();  
  14.         // 初始化數據  
  15.         initData();  
  16.   
  17.     }  
  18.   
  19.     /** 
  20.      * 獲取數據方法 
  21.      */  
  22.     private void initData() {  
  23.         // 應用版本名稱  
  24.         tv_version_name.setText("版本名:" + getVersionName());  
  25.     }  
  26.   
  27.     /** 
  28.      * 獲取版本名稱:清單文件中 
  29.      *  
  30.      * @return 應用版本名稱 返回null代表有異常 
  31.      */  
  32.     private String getVersionName() {  
  33.         // 1.管理者對象packageManager  
  34.         PackageManager pm = getPackageManager();  
  35.         // 2.從包的管理者對象中,獲取指定包名的基本信息(版本名稱,版本號)  
  36.         try {  
  37.             PackageInfo packageInfo = pm.getPackageInfo(getPackageName(), 0);  
  38.             // 3.獲取版本名稱  
  39.             return packageInfo.versionName;  
  40.         } catch (Exception e) {  
  41.             e.printStackTrace();  
  42.         }  
  43.         return null;  
  44.   
  45.     }  
  46.   
  47.     /** 
  48.      * 初始化UI方法 alt+shift+j 
  49.      */  
  50.     private void initUI() {  
  51.   
  52.         tv_version_name = (TextView) findViewById(R.id.tv_version_name);  
  53.     }  
  54.   
  55. }  

  完成後,運行項目

Android手機衛士(一):實現splash

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