English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Metodo rapido e semplice per implementare la modalità notturna in Android con esempi dettagliati

ChangeMode

Indirizzo del progetto:ChangeMode

Implementazione del modalità notturna per Android.

Realizzare il modo notturno più semplice, supporta ListView, RecyclerView.

Anteprima

Uso xml

android:background="?attr/zzbackground"
app:backgroundAttr="zzbackground"//Se la pagina corrente deve essere aggiornata immediatamente, inserire il nome dell'attributo ad esempio R.attr.zzbackground trasmette zzbackground
android:textColor="?attr/zztextColor"
app:textColorAttr="zztextColor"//Per aggiornare immediatamente l'effetto della pagina, come sopra

java

@Override
protected void onCreate(Bundle savedInstanceState) {
// 1. Chiamata di questo metodo nella pagina che deve avere un effetto di commutazione immediato
ChangeModeController.getInstance().init(this,R.attr.class).setTheme(this, R.style.DayTheme, R.style.NightTheme);
// Chiamata di questo metodo su altre pagine 
//ChangeModeController.setTheme(this, R.style.DayTheme, R.style.NightTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// aggiungi view extra alla gestione notturna
// ChangeModeController.getInstance().addBackgroundColor(toolbar, R.attr.colorPrimary);
//ChangeModeController.getInstance().addBackgroundDrawable(view,R.attr.colorAccent);
// ChangeModeController.getInstance().addTextColor(view, R.attr.colorAccent);
//2. Impostare la transizione
//ChangeModeController.changeDay(this, R.style.DayTheme);
//ChangeModeController.changeNight(this, R.style.NightTheme);
}
@Override
protected void onDestroy() {
super.onDestroy();
// 3. Chiamata in onDestroy
ChangeModeController.onDestory();
}

Descrizione dettagliata delle operazioni

Primo passo: personalizzare le proprietà

<?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>

Secondo passo: configurare il file di stile notturno

<resources>
<!-- Tema di base dell'applicazione. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Personalizza il tuo tema qui. -->
<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>
<!-- Modalità diurna -->
<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>
<!-- Modalità notturna -->
<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>

Impostare i valori degli attributi corrispondenti per i modelli relativi:

<?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>

Terzo passo: configurare l'uso degli attributi corrispondenti nel file di layout

<?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="Switching mode notturna 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>

Attenzione agli attributi textColorAttr, backgroundAttr e backgroundDrawableAttr. Se è necessario aggiornare immediatamente la pagina corrente, è necessario aggiungere l'attributo corrispondente.

Proprietà Descrizione

Impostazione dell'attributo di colore del testo quando si modifica il colore del testo. Ad esempio, si può trasmettere zztextColor tramite R.attr.zztextColor. Esempio: app:textColorAttr="zztextColor"
Impostazione dell'attributo di sfondoAttr quando si modifica il colore di sfondo o l'immagine di sfondo. Come sopra. Esempio: app:backgroundAttr="zzbackground"
backgroundDrawableAttr imposta il colore di sfondo/immagine di sfondo quando si modifica. Come sopra. Esempio: app:backgroundDrawableAttr="zzbackground"

Quarto passo: chiamata del codice java nella pagina

@Override
protected void onCreate(Bundle savedInstanceState) {
// 1. Chiamata di questo metodo nella pagina che deve avere un effetto di commutazione immediato
ChangeModeController.getInstance().init(this,R.attr.class).setTheme(this, R.style.DayTheme, R.style.NightTheme);
// Chiamata di questo metodo su altre pagine 
//ChangeModeController.setTheme(this, R.style.DayTheme, R.style.NightTheme);
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 2. Imposta la commutazione tra il tema notturno e diurno
//ChangeModeController.changeDay(this, R.style.DayTheme);// commuta il tema diurno
//ChangeModeController.changeNight(this, R.style.NightTheme);// commuta il tema notturno
}
@Override
protected void onDestroy() {
super.onDestroy();
// 3. Chiamata in onDestroy
ChangeModeController.onDestory();
}

Chiamata del codice in tre passaggi per iniziare il viaggio notturno. Se la pagina ha una vista nuova da aggiungere alla gestione del modulo notturno, chiamata del codice:

// aggiungi view extra alla gestione notturna
// ChangeModeController.getInstance().addBackgroundColor(toolbar, R.attr.colorPrimary);
//ChangeModeController.getInstance().addBackgroundDrawable(view,R.attr.colorAccent);
// ChangeModeController.getInstance().addTextColor(view, R.attr.colorAccent);

Se ci sono altre proprietà non standard definite durante la modifica del modo notturno, è possibile chiamare il seguente codice dopo ChangeModeController.changeDay o ChangeModeController.changeNight per assegnare il valore alle proprietà correlate:

TypedValue attrTypedValue = ChangeModeController.getAttrTypedValue(this, R.attr.zztextColor);
toolbar.setTitleTextColor(getResources().getColor(attrTypedValue.resourceId));
Informazioni su di me
Un sviluppatore Android a ZhengZhou.

Licenza
======= Copyright 2016 zhangke
Rilasciato sotto licenza Apache License, Version 2.0 (la "Licenza"); non è possibile utilizzare questo file se non in conformità con la Licenza. È possibile ottenere una copia della Licenza all'indirizzo http://www.apache.org/licenses/LICENSE-2.0 A meno che non richiesto dalla legge applicabile o concordato per iscritto, il software distribuito sotto la Licenza è distribuito su una base "così come è", senza garanzie o condizioni di alcun genere, né espresse né implicite. Vedere la Licenza per il linguaggio specifico che governa le autorizzazioni e le limitazioni della Licenza.

Come descritto sopra, questo è un esempio dettagliato del metodo rapido e semplice per implementare la modalità notturna su Android che l'autore ha introdotto agli utenti. Spero che sia utile a tutti. Se avete domande, lasciate un commento e l'autore risponderà prontamente. Ringraziamo anche il supporto del sito web Yell per il tutorial!

La seguente è una spiegazione dettagliata del metodo rapido e semplice per implementare la modalità notturna su Android fornita dall'autore. Spero che sia utile a tutti. Se avete domande, lasciate un commento e l'autore risponderà prontamente. Ringraziamo anche il supporto del sito web Yell per il tutorial!

Ti potrebbe interessare