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

來源:互聯網
上載者:User

 

       最近,一直在研究FM收音機源碼,通過一星期的學習,基本上弄懂了源碼的調用關係以及布局檔案的顯示,整體上給我

的感覺是它的布局方式以及各個類之間的調用相當細緻,只你能慢慢的消化了。苦惱的是還有很多底層的知識沒有涉及到,

目前也只是一步步的研究,希望能早日研究透徹。

      學習的時候,發現了FM收音機的啟動運行背景畫面的切換,感覺很有意思,於是一步步的觀察,終於給摸透了。在此總

結一下:背景的特效切換技術採用的Activity的Theme屬性 ; 然後,在啟動成功後調用自訂的contentView(view)來顯示

我們的圖片。 FM收音機特效如下:

 

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

 

                              

 

 

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

 

  1 、 在values檔案建立styles.xml檔案,添加一個屬性節點:

<?xml version="1.0" encoding="UTF-8"?><resources>    <!-- style name以及它所繼承的系統Theme主題 -->     <style  name="Theme.MainActivity" parent="android:Theme">     <!-- 是否允許有標題列 -->       <item name="android:windowNoTitle">true</item>       <!-- 提示背景圖片 -->       <item name="android:windowBackground">@drawable/bg_theme</item>       <item name="android:windowContentOverlay">@null</item>       <!-- 是否允許背景灰暗 -->       <item name="android:backgroundDimEnabled">false</item>     </style>          <!-- dialog樣式的Activity -->     <style name="Theme.FloatActivity" parent="android:style/Theme.Dialog" >       <item name="android:windowBackground" >@drawable/bg_car</item>       <item name="android:backgroundDimEnabled">false</item>     </style></resources>

 

   2、在AndroidManifest檔案下應用我們之前建立的theme/style

 

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"package="com.feixun.cn" android:versionCode="1" android:versionName="1.0"><application android:icon="@drawable/icon" android:label="@string/app_name"><activity android:name=".MainActivity" android:label="@string/app_name"android:theme="@style/Theme.MainActivity"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter></activity><activity android:name=".TestActivityCallBack"></activity><activity android:name=".TestActivityCallBack_2" android:theme="@style/Theme.MainActivity"></activity></application></manifest> 

 

 

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

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

 

  
importandroid.app.Activity;import android.os.Bundle;importandroid.os.Handler;importandroid.os.Message;importandroid.widget.LinearLayout;public class MainActivity extends Activity {   private static int WAIT_FOR = 1;    /** Called whenthe activity is first created. */   @Override   public void onCreate(BundlesavedInstanceState) {     super.onCreate(savedInstanceState);     // 利用handler來使主線程睡眠一段時間      handler.sendEmptyMessage(WAIT_FOR);      setContentView(R.layout.main);   }   private Handler handler = new Handler() {      public voidhandleMessage(Message msg) {        if (msg.what == WAIT_FOR) {           try {              //主線程睡眠一段時間              Thread.sleep(5000);           }            catch(InterruptedException e) {             // TODO Auto-generatedcatch block              e.printStackTrace();           }        }      }   };}

  

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

 

 

  代碼:http://download.csdn.net/detail/qinjuning/3807070

 

 
 
 
 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.