嘿嘿,书接上回,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());
}

});


程序截图:


工程源码:点我

更多相关文章

  1. Android(安卓)系统启动分析
  2. Android(安卓)Studio中Xml的新建及shape绘图
  3. Android中的ListView点击时的背景颜色设置
  4. Android基础UI篇------六种基本布局
  5. android 按百分比设置布局
  6. Android(安卓)JSON解析示例代码
  7. android的Sprite,TiledLayer,LayerManager
  8. Android(安卓)的源代码结构
  9. 简易android通讯录

随机推荐

  1. 【Android】Android之USB
  2. 创建Android库的方法及Android(安卓).aar
  3. Android本地视频播放器开发--视频解码
  4. Andriod编程基础(一):Andriod的优势及光明
  5. 开发可统计单词个数的Android驱动程序(1)
  6. Android应用程序的类型
  7. android弹力效果菜单、组件化项目、电影
  8. android小说阅读、MVP + RxJava + Retrof
  9. Android木马之“妄想”
  10. 修改Android工程版本