zoukankan      html  css  js  c++  java
  • android设置主题和自定义主题的方法

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

    });


     程序截图:


     工程源码:点我

  • 相关阅读:
    又一道简单的题
    atoi函数的使用(将字符串转换成整型数)
    【贪心】Radar Installation(POJ1328)
    【BFS】鸣人与佐助
    谍报分析
    适配器模式(C++实现)
    策略模式(C++)
    工厂模式(C++实现)
    桥接模式(C++实现)
    关于getMemory函数的几点思考
  • 原文地址:https://www.cnblogs.com/bausch/p/2226229.html
Copyright © 2011-2022 走看看