歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux編程 >> Linux編程

Android中style和theme巧用:Android應用程序啟動時背景畫面的切換

最近,一直在研究FM收音機源碼,通過一星期的學習,基本上弄懂了源碼的調用關系以及布局文件的顯示,整體上給我的感覺是它的布局方式以及各個類之間的調用相當細致,只你能慢慢的消化了。苦惱的是還有很多底層的知識沒有涉及到,目前也只是一步步的研究,希望能早日研究透徹。

學習的時候,發現了FM收音機的啟動運行背景畫面的切換,感覺很有意思,於是一步步的觀察,終於給摸透了。在此總結一下:背景的特效切換技術采用的Activity的Theme屬性 ; 然後,在啟動成功後調用自定義的contentView(view)來顯示我們的圖片。 FM收音機特效如下:

初始啟動後,界面顯示為(應用了theme屬性)      啟動成功後,界面布局如下: 

             

                 

接下來,展開我們的旅行,真的挺簡單的,輕裝出行吧。

1 、 在values文件新建styles.xml文件,添加一個屬性節點:

[java]
  1. <?xml version="1.0" encoding="UTF-8"?>  
  2. <resources>  
  3.     <!-- style name以及它所繼承的系統Theme主題 -->  
  4.      <style  name="Theme.MainActivity" parent="Android:Theme">  
  5.      <!-- 是否允許有標題欄 -->  
  6.        <item name="android:windowNoTitle">true</item>  
  7.        <!-- 提示背景圖片 -->  
  8.        <item name="android:windowBackground">@drawable/bg_theme</item>  
  9.        <item name="android:windowContentOverlay">@null</item>  
  10.        <!-- 是否允許背景灰暗 -->  
  11.        <item name="android:backgroundDimEnabled">false</item>  
  12.      </style>  
  13.        
  14.      <!-- dialog樣式的Activity -->  
  15.      <style name="Theme.FloatActivity" parent="android:style/Theme.Dialog" >  
  16.        <item name="android:windowBackground" >@drawable/bg_car</item>  
  17.        <item name="android:backgroundDimEnabled">false</item>  
  18.      </style>  
  19. </resources>  

2、在AndroidManifest文件下應用我們之前創建的theme/style

[java]

  1. <?xml version="1.0" encoding="utf-8"?>  
  2. <manifest xmlns:android="http://schemas.android.com/apk/res/android"  
  3.     package="com.feixun.cn" android:versionCode="1" android:versionName="1.0">  
  4.     <application android:icon="@drawable/icon" android:label="@string/app_name">  
  5.         <activity android:name=".MainActivity" android:label="@string/app_name"  
  6.             android:theme="@style/Theme.MainActivity">  
  7.             <intent-filter>  
  8.                 <action android:name="android.intent.action.MAIN" />  
  9.                 <category android:name="android.intent.category.LAUNCHER" />  
  10.             </intent-filter>  
  11.         </activity>  
  12.   
  13.         <activity android:name=".TestActivityCallBack">  
  14.               
  15.         </activity>  
  16.         <activity android:name=".TestActivityCallBack_2" android:theme="@style/Theme.MainActivity"></activity>  
  17.     </application>  
  18.   
  19. </manifest>   

下面,以一個程序來驗證我們的特效,程序啟動時顯示的是我們自定義屬性中"Theme.MainActivity"

中的bg_theme圖片,進入程序後,顯示的的是我們自定義布局中的bg_car圖片,是不是看起來很炫。為了延長特效時間,我們可以利用handler來延長特效時間。 程序如下:

[java]

  1. <pre class="java" name="code">    

[java]

  1. importandroid.app.Activity;  
  2. import android.os.Bundle;  
  3. importandroid.os.Handler;  
  4. importandroid.os.Message;  
  5. importandroid.widget.LinearLayout;  
  6.   
  7. public class MainActivity extends Activity {  
  8.   
  9.    private static int WAIT_FOR = 1;  
  10.    
  11.    /** Called whenthe activity is first created. */  
  12.    @Override  
  13.    public void onCreate(BundlesavedInstanceState) {  
  14.      super.onCreate(savedInstanceState);  
  15.      // 利用handler來使主線程睡眠一段時間   
  16.       handler.sendEmptyMessage(WAIT_FOR);  
  17.       setContentView(R.layout.main);  
  18.    }  
  19.   
  20.    private Handler handler = new Handler() {  
  21.       public voidhandleMessage(Message msg) {  
  22.         if (msg.what == WAIT_FOR) {  
  23.            try {  
  24.               //主線程睡眠一段時間   
  25.               Thread.sleep(5000);  
  26.            }  
  27.             catch(InterruptedException e) {  
  28.              // TODO Auto-generatedcatch block   
  29.               e.printStackTrace();  
  30.            }  
  31.         }  
  32.       }  
  33.    };  
  34. }  

看起來是不是很潮,呵呵,感覺加在你的應用程序吧。。 咱可是潮人。

代碼下載地址:

免費下載地址在 http://linux.linuxidc.com/

用戶名與密碼都是www.linuxidc.com

具體下載目錄在 /2012年資料/2月/2日/Android中style和theme巧用Android應用程序啟動時背景畫面的切換/

Copyright © Linux教程網 All Rights Reserved