Android中style和theme巧用:Android应用程序启动时背景画面的切换

 

       最近,一直在研究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

 







 
 
 
 





  • 1
    点赞
  • 17
    收藏
    觉得还不错? 一键收藏
  • 11
    评论
评论 11
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值