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>