Android recipe 定制窗口主题(window theme)

最近看了一本书,感觉不错,名字叫《android recipe》,把笔记记录在此。


android自带有很多主题可以用,可以参考R.style下的列表,使用它有两种方法,一个是在Manifest.xml文件下,一个是在java代码中。

xml例子如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package
="my.demo"
android:versionCode
="1"
android:versionName
="1.0">
<uses-sdk
android:minSdkVersion="7" />
<application
android:icon="@drawable/icon"
android:label
="@string/app_name"
android:theme
="@android:style/Theme.Black.NoTitleBar.Fullscreen">
<activity
android:name=".MyDemoActivity"
android:label
="@string/app_name">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>

</application>
</manifest>

 上面的效果就是全屏。

下面是在代码中设置。

    @Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);

requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
//这里注意,requestWindowFeature()必须在setContentView()之前调用!
setContentView(R.layout.main);

setProgressBarIndeterminateVisibility(
true);
}

 这是显示效果:

既然系统自带主题,那当然也就能自定义主题。

首先创建自己的主题文件, res/values/my_styles.xml,内容如下:

<?xml version="1.0" encoding="utf-8"?>

<resources>
<style name="MyTheme.One" parent="@android:style/Theme">
<item name="android:windowNoTitle">true</item>
</style>

<style name="MyTheme.Two" parent="@android:style/Theme">
<item name="android:windowBackground">@drawable/icon</item>
</style>
</resources>

  这里定义了两个主题,使用方法如下:

<?xml version="1.0" encoding="utf-8"?>
<manifest
xmlns:android="http://schemas.android.com/apk/res/android"
package
="my.demo"
android:versionCode
="1"
android:versionName
="1.0">
<uses-sdk
android:minSdkVersion="7" />
<application
android:icon="@drawable/icon"
android:label
="@string/app_name">
<activity
android:name=".TempActivity"
android:label
="@string/app_name"
android:theme
="@style/MyTheme.Two">
<intent-filter>
<action
android:name="android.intent.action.MAIN" />
<category
android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MyDemoActivity"></activity>
</application>
</manifest>
posted @ 2011-08-01 21:19  周柯文  阅读(896)  评论(0编辑  收藏  举报