嘿嘿,書接上回,android有兩種設置主題到方法,一種就是通過修改manifest文件,一種就是在通過修改我們的java代碼;主題的自定義設置和樣式的自定義設置類似。
首先我們先來自定兩個主題文件。 在res/values/style.xml添加如下代碼:
<style name="MyTheme1" parent="@android:style/Theme.Dialog">
</style>
<style name="MyTheme2"
parent="@android:style/Theme.Wallpaper.NoTitleBar.Fullscreen">
</style>
<!–
說明:
上建立瞭兩個主題樣式,第一個是對話框的主題,第二個是壁紙的主題。僅為例子使用,沒有
更改。想要更改某些屬性可以參照:android sdk目錄\data\res\values 目錄下的themes.xml
文件中的主題樣式進行更改
–>
然後我們通過修改mainfest文件的方式來設置主題,打到mainfest.xml文件,對<application>標簽加入代碼:android:theme="@style/MyTheme1",這樣就是對整個應用的主題進行設置,如果隻修改某個activity的主題,這句代碼也可以加在相應的<activity>標簽中。
在java代碼裡我們實現一下主題的設定,主要代碼如下:
//讀取主題 如果讀取失敗,則設置為系統默認的主題
theme = getSharedPreferences("cons", MODE_PRIVATE).getInt("theme",
android.R.style.Theme);
//設定主題
setTheme(theme);
//調用父類方法,一定要放到設定主題之後
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn = (Button) findViewById(R.id.btn1);
//通過點擊,切換主題。點擊後要重起應用能看到效果
btn.setOnClickListener( new OnClickListener(){
@Override
public void onClick(View v) {
if( R.style.MyTheme1 != theme ){
//將主題保存到sharedPreference中,以便下次啟動設置主題時讀取
sf.getSharedPreferences("cons",Activity.MODE_PRIVATE).edit()
.putInt("theme", R.style.MyTheme1).commit();
} else {
sf.getSharedPreferences("cons",Activity.MODE_PRIVATE).edit()
.putInt("theme", R.style.MyTheme2).commit();
}
//退出應用
android.os.Process.killProcess(android.os.Process.myPid());
}
});
程序截圖:
工程源碼:點我
作者 bausch