最近,一直在研究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. 自定义Android电子时钟控件
  2. 如何利用Activity的Dialog风格完成弹出框设计 “第二届 Google
  3. 超炫的3D特效程序管理功能android
  4. Android窗口管理服务WindowManagerService显示窗口动画的原理分
  5. 实用的Log打印类封装,助尼快速定位源码(android)
  6. 实现ListView的条目下自动隐藏显示Button的方法
  7. Android(安卓)mp3音乐播放器实例-----概述
  8. Android(安卓)webView中无法显示Twitter主页
  9. Android底部Tab页基于ViewPager的实现

随机推荐

  1. mysql 协议的ping命令包及解析详解及实例
  2. Centos 6.4源码安装mysql-5.6.28.tar.gz
  3. linux下源码安装mysql5.6.20教程
  4. CentOS 6.4下编译安装MySQL5.6.14教程
  5. linux二进制通用包安装mysql5.6.20教程
  6. mysql运行net start mysql报服务名无效的
  7. mysql中错误:1093-You can’t specify tar
  8. Linux虚拟机下mysql 5.7安装配置方法图文
  9. Mac下mysql5.7.10安装教程
  10. 记录无法安装mysql-Invalid GPG Key from