点击button实现模式的切换
布局中的代码
<span style="font-size:18px;"><code class="hljs xml has-numbering"><span class="hljs-tag"><<span class="hljs-title">RelativeLayout</span> <span class="hljs-attribute">xmlns:android</span>=<span class="hljs-value">"http://schemas.android.com/apk/res/android"</span> <span class="hljs-attribute">xmlns:tools</span>=<span class="hljs-value">"http://schemas.android.com/tools"</span> <span class="hljs-attribute">android:layout_width</span>=<span class="hljs-value">"match_parent"</span> <span class="hljs-attribute">android:layout_height</span>=<span class="hljs-value">"match_parent"</span> <span class="hljs-attribute">tools:context</span>=<span class="hljs-value">".MainActivity"</span> ></span> <span class="hljs-tag"><<span class="hljs-title">Button </span> <span class="hljs-attribute">android:id</span>=<span class="hljs-value">"@+id/changemode"</span> <span class="hljs-attribute">android:layout_width</span>=<span class="hljs-value">"fill_parent"</span> <span class="hljs-attribute">android:layout_height</span>=<span class="hljs-value">"wrap_content"</span> <span class="hljs-attribute">android:layout_alignParentLeft</span>=<span class="hljs-value">"true"</span> <span class="hljs-attribute">android:layout_alignParentTop</span>=<span class="hljs-value">"true"</span> <span class="hljs-attribute">android:text</span>=<span class="hljs-value">"切换白天夜间模式"</span> /></span> <span class="hljs-tag"></<span class="hljs-title">RelativeLayout</span>></span></code></span>
封装的工具包代码
<span style="font-size:18px;"><code class="hljs cs has-numbering">import android.content.Context; import android.content.SharedPreferences; <span class="hljs-keyword">public</span> <span class="hljs-keyword">class</span> SPUtils { <span class="hljs-keyword">private</span> <span class="hljs-keyword">static</span> SharedPreferences sp; <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> <span class="hljs-keyword">void</span> <span class="hljs-title">put</span>(Context ct, String key, String <span class="hljs-keyword">value</span>) { <span class="hljs-keyword">if</span> (sp == <span class="hljs-keyword">null</span>) sp = ct.getSharedPreferences(key, <span class="hljs-number">0</span>); sp.edit().putString(key, <span class="hljs-keyword">value</span>).commit(); } <span class="hljs-keyword">public</span> <span class="hljs-keyword">static</span> String <span class="hljs-title">get</span>(Context ct, String key,String <span class="hljs-keyword">value</span>) { <span class="hljs-keyword">if</span> (sp == <span class="hljs-keyword">null</span>) sp = ct.getSharedPreferences(key, <span class="hljs-number">0</span>); <span class="hljs-keyword">if</span> (sp.getString(key, <span class="hljs-string">""</span>) != <span class="hljs-keyword">null</span>) { <span class="hljs-keyword">return</span> sp.getString(key, <span class="hljs-string">""</span>); } <span class="hljs-keyword">return</span> <span class="hljs-keyword">null</span>; } }</code></span>
//工具包的帮助 在主类中调用就能实现模式的切换了 话不多说 下面就让我们展示主类中的代码
<span style="font-size:18px;"><code class="hljs java has-numbering"><span class="hljs-keyword">import</span> android.os.Bundle; <span class="hljs-keyword">import</span> android.app.Activity; <span class="hljs-keyword">import</span> android.view.View; <span class="hljs-keyword">import</span> android.widget.Button; <span class="hljs-keyword">public</span> <span class="hljs-class"><span class="hljs-keyword">class</span> <span class="hljs-title">MainActivity</span> <span class="hljs-keyword">extends</span> <span class="hljs-title">Activity</span> {</span> <span class="hljs-keyword">private</span> Button changemode; <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">protected</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onCreate</span>(Bundle savedInstanceState) { <span class="hljs-keyword">if</span> (SPUtils.get(<span class="hljs-keyword">this</span>, <span class="hljs-string">"theme"</span>, <span class="hljs-string">"dayTheme"</span>).equals(<span class="hljs-string">"dayTheme"</span>)) { setTheme(R.style.dayTheme); } <span class="hljs-keyword">else</span> { setTheme(R.style.nightTheme); } <span class="hljs-keyword">super</span>.onCreate(savedInstanceState); setContentView(R.layout.activity_main); changemode=(Button) findViewById(R.id.changemode); changemode.setOnClickListener(<span class="hljs-keyword">new</span> View.OnClickListener() { <span class="hljs-annotation">@Override</span> <span class="hljs-keyword">public</span> <span class="hljs-keyword">void</span> <span class="hljs-title">onClick</span>(View v) { <span class="hljs-keyword">if</span> (SPUtils.get(MainActivity.<span class="hljs-keyword">this</span>, <span class="hljs-string">"theme"</span>, <span class="hljs-string">"dayTheme"</span>).equals( <span class="hljs-string">"dayTheme"</span>)) { SPUtils.put(MainActivity.<span class="hljs-keyword">this</span>, <span class="hljs-string">"theme"</span>, <span class="hljs-string">"nightTheme"</span>); } <span class="hljs-keyword">else</span> { SPUtils.put(MainActivity.<span class="hljs-keyword">this</span>, <span class="hljs-string">"theme"</span>, <span class="hljs-string">"dayTheme"</span>); } recreate(); } }); } }</code></span>
当然了 这些还不够 我们的模式切换是主题的调用 下面是我们白天和夜间的主题模式
<span style="font-size:18px;"><code class="hljs xml has-numbering"> <span class="hljs-comment"><!--白天主题--></span> <span class="hljs-tag"><<span class="hljs-title">style</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"dayTheme"</span> <span class="hljs-attribute">parent</span>=<span class="hljs-value">"AppTheme"</span>></span><span class="css"> <<span class="hljs-tag">item</span> <span class="hljs-tag">name</span>="<span class="hljs-tag">android</span><span class="hljs-pseudo">:textColor"</span>><span class="hljs-id">#525252</span></<span class="hljs-tag">item</span>> <<span class="hljs-tag">item</span> <span class="hljs-tag">name</span>="<span class="hljs-tag">android</span><span class="hljs-pseudo">:background"</span>><span class="hljs-id">#f7f7f7</span></<span class="hljs-tag">item</span>> </span><span class="hljs-tag"></<span class="hljs-title">style</span>></span> <span class="hljs-comment"><!--夜间主题--></span> <span class="hljs-tag"><<span class="hljs-title">style</span> <span class="hljs-attribute">name</span>=<span class="hljs-value">"nightTheme"</span> <span class="hljs-attribute">parent</span>=<span class="hljs-value">"AppTheme"</span>></span><span class="css"> <<span class="hljs-tag">item</span> <span class="hljs-tag">name</span>="<span class="hljs-tag">android</span><span class="hljs-pseudo">:textColor"</span>><span class="hljs-id">#868a96</span></<span class="hljs-tag">item</span>> <<span class="hljs-tag">item</span> <span class="hljs-tag">name</span>="<span class="hljs-tag">android</span><span class="hljs-pseudo">:background"</span>><span class="hljs-id">#1e1e2a</span> </<span class="hljs-tag">item</span>> </span><span class="hljs-tag"></<span class="hljs-title">style</span>></span></code></span>