3行のAndroidコードは昼間の夜間モードをスムーズに切り替えます。
Usage xml android:background=?atr/zbackground ap:background Attr=zzzbackground/もし現在のページがすぐに更新されるなら、ここに入ってきた属性名はR.atr.zbackgroundでzbackgroundであれば、android:text Color=?atr/ztext Color ap:text ColorAttr=zztext Color/
デモンストレーション効果
Usage xml
ステップ1:カスタム属性
第四ステップ:ページ呼び出しjavaコード
ページが新しく作成された場合、夜間モードのコントロールに参加するには、Androidのソースコードの呼び出し:
TypedValue atrTypedValue=Change ModeController.get Attr TypedValue(this,R.atr.ztext Color)
toolbar.setTitleText Color(getsResource().get Color(atrTypedValue.resource Id);
ソースのダウンロード住所:http://xiazai.jb51.net/201609/yuanma/AndroidChangeMode(jb 51.net)rar
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。
デモンストレーション効果
Usage xml
android:background="?attr/zzbackground"
app:backgroundAttr="zzbackground"// , R.attr.zzbackground zzbackground
android:textColor="?attr/zztextColor"
app:textColorAttr="zztextColor"//
java
@Override
protected void onCreate(Bundle savedInstanceState) {
//
ChangeModeController.getInstance().init(this,R.attr.class).setTheme(this, R.style.DayTheme, R.style.NightTheme);
//
//ChangeModeController.setTheme(this, R.style.DayTheme, R.style.NightTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// view
// ChangeModeController.getInstance().addBackgroundColor(toolbar, R.attr.colorPrimary);
//ChangeModeController.getInstance().addBackgroundDrawable(view,R.attr.colorAccent);
// ChangeModeController.getInstance().addTextColor(view,R.attr.colorAccent);
//
//ChangeModeController.changeDay(this, R.style.DayTheme);
//ChangeModeController.changeNight(this, R.style.NightTheme);
}
@Override
protected void onDestroy() {
super.onDestroy();
// onDestroy
ChangeModeController.onDestory();
}
詳細操作説明ステップ1:カスタム属性
<?xml version="1.0" encoding="utf-8"?>
<resources>
<attr name="zzbackground" format="color|reference"/>
<attr name="zzbackgroundDrawable" format="reference"/>
<attr name="zztextColor" format="color"/>
<attr name="zzItemBackground" format="color"/>
</resources>
ステップ2:ナイトスタイルファイルの設定
<resources>
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
<item name="windowActionBar">false</item>
<item name="android:windowNoTitle">true</item>
<item name="windowNoTitle">true</item>
</style>
<!-- -->
<style name="DayTheme" parent="AppTheme">
<item name="zzbackground">@color/dayBackground</item>
<item name="zzbackgroundDrawable">@drawable/ic_launcher</item>
<item name="zztextColor">@color/dayTextColor</item>
<item name="zzItemBackground">@color/dayItemBackground</item>
</style>
<!-- -->
<style name="NightTheme" parent="AppTheme">
<item name="zzbackground">@color/nightBackground</item>
<item name="zzbackgroundDrawable">@color/nightBackground</item>
<item name="zztextColor">@color/nightTextColor</item>
<item name="zzItemBackground">@color/nightItemBackground</item>
<item name="colorPrimary">@color/colorPrimaryNight</item>
<item name="colorPrimaryDark">@color/colorPrimaryDarkNight</item>
<item name="colorAccent">@color/colorAccentNight</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" />
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" />
</resources>
関連する属性に対応するモードの属性値を設定します。
<?xml version="1.0" encoding="utf-8"?>
<resources>
<color name="dayBackground">#F2F4F7</color>
<color name="dayTextColor">#000</color>
<color name="dayItemBackground">#fff</color>
<color name="nightItemBackground">#37474F</color>
<color name="nightBackground">#263238</color>
<color name="nightTextColor">#fff</color>
</resources>
ステップ3:レイアウトファイルに対応する属性を設定します。
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:orientation="vertical"
android:background="?attr/zzbackground"
app:backgroundAttr="zzbackground"
tools:context="com.thinkfreely.changemode.MainActivity">
<android.support.design.widget.AppBarLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
app:theme="@style/AppTheme.AppBarOverlay">
<android.support.v7.widget.Toolbar
android:id="@+id/toolbar"
android:layout_width="match_parent"
android:layout_height="?attr/actionBarSize"
android:background="?attr/colorPrimary"
app:backgroundAttr="colorPrimary"
app:titleTextColor="?attr/zztextColor"
app:popupTheme="@style/AppTheme.PopupOverlay"
/>
</android.support.design.widget.AppBarLayout>
<Button
android:layout_width="match_parent"
android:layout_height="120dp"
android:gravity="center"
android:textColor="?attr/zztextColor"
app:textColorAttr="zztextColor"
android:background="?attr/zzItemBackground"
app:backgroundAttr="zzItemBackground"
android:padding="10dp"
android:layout_marginBottom="8dp"
android:textSize="22sp"
android:textAllCaps="false"
android:text=" by Mr.Zk" />
<android.support.v7.widget.RecyclerView
android:id="@+id/recyclerView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:scrollbars="vertical"/>
</LinearLayout>
text ColorAttr、backgroundAttr、background Drawable Attrの3つの属性に注意してください。現在のページをすぐに更新するには、該当する属性を追加します。第四ステップ:ページ呼び出しjavaコード
@Override
protected void onCreate(Bundle savedInstanceState) {
//1.
ChangeModeController.getInstance().init(this,R.attr.class).setTheme(this, R.style.DayTheme, R.style.NightTheme);
//
//ChangeModeController.setTheme(this, R.style.DayTheme, R.style.NightTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//2.
//ChangeModeController.changeDay(this, R.style.DayTheme);//
//ChangeModeController.changeNight(this, R.style.NightTheme);//
}
@Override
protected void onDestroy() {
super.onDestroy();
//3. onDestroy
ChangeModeController.onDestory();
}
コードは3ステップを呼び出して、夜間の旅を開始できます。ページが新しく作成された場合、夜間モードのコントロールに参加するには、Androidのソースコードの呼び出し:
// view
// ChangeModeController.getInstance().addBackgroundColor(toolbar, R.attr.colorPrimary);
//ChangeModeController.getInstance().addBackgroundDrawable(view,R.attr.colorAccent);
// ChangeModeController.getInstance().addTextColor(view,R.attr.colorAccent);
ナイトモードを変更する時に他の標準で定義されていない属性がある場合、Change ModeController.changeDayまたはChange ModeController.changeNightの後に以下のコードを呼び出して関連属性に値を付けます。TypedValue atrTypedValue=Change ModeController.get Attr TypedValue(this,R.atr.ztext Color)
toolbar.setTitleText Color(getsResource().get Color(atrTypedValue.resource Id);
ソースのダウンロード住所:http://xiazai.jb51.net/201609/yuanma/AndroidChangeMode(jb 51.net)rar
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。