点击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>
本文介绍了一个简单的Android应用程序如何通过按钮点击来切换白天和夜间模式。通过使用SharedPreferences存储当前的主题设置,并在按钮被点击时更改主题并重新创建Activity来实现模式切换。
1万+

被折叠的 条评论
为什么被折叠?



