zoukankan      html  css  js  c++  java
  • 【Android 界面效果5】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应用程序启动时背景画面的切换/

  • 相关阅读:
    GNU GRUB 2:系统引导器的领导者
    Javascript 返回上一页并刷新
    返回代表指定日期的指定日期部分的整数。返回当前周
    请问如何获取字符串在数组中的位置
    SQL终极优化(包括很多非索引方面的优化和原理)
    td onmouseover="this.style.cursor='hand'" onmouseout="this.style.cursor='normal'" >小手状
    树形菜单
    分页 的首页 rs.absoluteposition=rs.absoluteposition+2+((abs(wzpage)1)*wzrep) 要加2 ??
    JS只弹出一个居中弹出窗口
    一个真实的项目经历,很多东西大家可以借鉴下
  • 原文地址:https://www.cnblogs.com/dongdong230/p/4183152.html
Copyright © 2011-2022 走看看