【文章摘要】
近些年,隨著移動(dòng)終端設(shè)備的不斷發(fā)展,基于Android系統(tǒng)的程序開發(fā)開始風(fēng)靡全球。在Android系統(tǒng)開發(fā)中,主題的設(shè)置通常作為UI設(shè)計(jì)的一部分備受程序開發(fā)人員的關(guān)注。通過合理的主題設(shè)置,能夠給用戶提供滿意的界面,提高用戶的滿意度。Android應(yīng)用開發(fā)中,UI設(shè)計(jì)師通常用風(fēng)格和主題來統(tǒng)一格式化各種屏幕和UI元素。
【關(guān)鍵詞】
主題設(shè)置;Android;應(yīng)用開發(fā)
近些年,隨著移動(dòng)終端設(shè)備的不斷發(fā)展,基于Android系統(tǒng)的程序開發(fā)開始風(fēng)靡全球。在Android系統(tǒng)開發(fā)中,主題的設(shè)置通常作為UI設(shè)計(jì)的一部分備受程序開發(fā)人員的關(guān)注。通過合理的主題設(shè)置,能夠給用戶提供滿意的界面,提高用戶的滿意度。
Android應(yīng)用開發(fā)中,UI設(shè)計(jì)師通常用風(fēng)格和主題來統(tǒng)一格式化各種屏幕和UI元素。
1 Android應(yīng)用開發(fā)中主題的設(shè)置
android有兩種設(shè)置主題的方法,一種就是通過修改manifest文件,一種就是在通過修改代碼;主題的自定義設(shè)置和樣式的自定義設(shè)置類似。
1.1 在manifest當(dāng)中設(shè)置主題
為了程序當(dāng)中所有的Activity當(dāng)中使用主題,可以打開AndroidManifest.xml 文件,編輯
1.2 在程序當(dāng)中設(shè)置主題
如果需要的話,開發(fā)人員可以在Activity當(dāng)中通過使用方法setTheme()來加載一個(gè)主題。注意,如果這么做的話,應(yīng)該初始化任何View之前設(shè)置主題。比如,在調(diào)用setContentView(View)和inflate(int,ViewGroup)方法前。這保證系統(tǒng)將當(dāng)前主題應(yīng)用在所有的UI界面。例子如下:
protected void onCreate(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
...
setTheme(android.R.style.Theme_Light);
setContentView(R.layout.linear_layout_3);
}
2 應(yīng)用舉例
2.1 定義主題
在res/values/style.xml添加如下代碼:
<!--
說明:
以上建立了兩個(gè)主題樣式,第一個(gè)是對(duì)話框的主題,第二個(gè)是壁紙的主題。僅為例子使用,沒有更改。想要更改某些屬性可以參照:android sdk目錄\data\res\values 目錄下的themes.xml。
2.2 設(shè)置主題
通過修改mainfest文件的方式來設(shè)置主題,首先打開到mainfest.xml文件,對(duì)
在java代碼里我們實(shí)現(xiàn)一下主題的設(shè)定,主要代碼如下:
//讀取主題 如果讀取失敗,則設(shè)置為系統(tǒng)默認(rèn)的主題
theme = getSharedPreferences(\"cons\",MODE_PRIVATE).getInt(\"theme\",
android.R.style.Theme);
//設(shè)定主題
setTheme(theme);
//調(diào)用父類方法,一定要放到設(shè)定主題之后
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button btn =(Button)findViewById(R.id.btn1);
//通過點(diǎn)擊,切換主題。點(diǎn)擊后要重起應(yīng)用能看到效果
btn.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View v){
if(R.style.MyTheme1 != theme){
//將主題保存到sharedPreference中,以便下次啟動(dòng)設(shè)置主題時(shí)讀取
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();
}
//退出應(yīng)用
android.os.Process.killProcess(android.os.Process.myPid());
}
});
【參考文獻(xiàn)】
[1]武海峰.移動(dòng)應(yīng)用在Android平臺(tái)上的部署[J].程序員.2009(05)
[2]陳璟,陳平華,李文亮.Android內(nèi)核分析[J].現(xiàn)代計(jì)算機(jī)(專業(yè)版).2009(11)