English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
ChangeMode
Adresse du projet :ChangeMode
Mise en œuvre du mode nuit pour Android.
Mettre en œuvre le mode nuit de la manière la plus simple, pris en charge par ListView, RecyclerView.
Aperçu
Usage xml
android:background="?attr/zzbackground" app:backgroundAttr="zzbackground"//Si la page actuelle doit être actualisée immédiatement, ici entrez le nom de l'attribut par exemple R.attr.zzbackground pour transmettre zzbackground android:textColor="?attr/zztextColor" app:textColorAttr="zztextColor"//Si vous souhaitez actualiser immédiatement l'effet de la page, procédez comme ci-dessus
java
@Override protected void onCreate(Bundle savedInstanceState) { //1. Appel de cette méthode sur la page où l'effet doit être basculé immédiatement ChangeModeController.getInstance().init(this,R.attr.class).setTheme(this, R.style.DayTheme, R.style.NightTheme); //Appel de cette méthode sur d'autres pages //ChangeModeController.setTheme(this, R.style.DayTheme, R.style.NightTheme); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //Ajouter des vues supplémentaires à la gestion nocturne // ChangeModeController.getInstance().addBackgroundColor(toolbar, R.attr.colorPrimary); //ChangeModeController.getInstance().addBackgroundDrawable(view, R.attr.colorAccent); // ChangeModeController.getInstance().addTextColor(view, R.attr.colorAccent); //2. Réglage de commutation //ChangeModeController.changeDay(this, R.style.DayTheme); //ChangeModeController.changeNight(this, R.style.NightTheme); } @Override protected void onDestroy() { super.onDestroy(); //3. Dans l'appel de onDestroy ChangeModeController.onDestory(); }
Description détaillée des opérations
Première étape : personnalisation des attributs
<?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>
Deuxième étape : configuration du fichier de style nocturne
<resources> <!-- Thème de base de l'application. --> <style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar"> <!-- Personnalisez votre thème ici. --> <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> <!--Mode jour --> <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> <!--Mode nuit --> <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.DarkActionBar"> /> <style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"> /> </resources>
Définir les valeurs des propriétés correspondantes pour les modes :
<?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>
Troisième étape : configurer l'utilisation des propriétés correspondantes dans le fichier de mise en page
<?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="mode de bascule de nuit par 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>
Attention aux attributs textColorAttr, backgroundAttr et backgroundDrawableAttr. Si vous souhaitez actualiser immédiatement la page courante, ajoutez les attributs correspondants.
Description des attributs
textColorAttr pour modifier la couleur du texte. Par exemple, pour transmettre zztextColor, utilisez R.attr.zztextColor. Exemple : app:textColorAttr="zztextColor"
backgroundAttr pour modifier la couleur de fond/Définir l'image de fond. Comme ci-dessus. Exemple : app:backgroundAttr="zzbackground"
backgroundDrawableAttr pour modifier la couleur de fond/Définir l'image de fond. Comme ci-dessus. Exemple : app:backgroundDrawableAttr="zzbackground"
Étape 4 : Appel de code java sur la page
@Override protected void onCreate(Bundle savedInstanceState) { //1. Appel de cette méthode sur la page où l'effet doit être basculé immédiatement ChangeModeController.getInstance().init(this,R.attr.class).setTheme(this, R.style.DayTheme, R.style.NightTheme); //Appel de cette méthode sur d'autres pages //ChangeModeController.setTheme(this, R.style.DayTheme, R.style.NightTheme); super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //2. Réglage du basculement entre le mode nuit et jour //ChangeModeController.changeDay(this, R.style.DayTheme);//Passer en mode jour //ChangeModeController.changeNight(this, R.style.NightTheme);//Changement de mode nocturne } @Override protected void onDestroy() { super.onDestroy(); //3. Dans l'appel de onDestroy ChangeModeController.onDestory(); }
Appel de code en trois étapes pour commencer le voyage nocturne. Si une vue créée récemment doit être ajoutée au contrôle du mode nocturne, l'appel de code est :
//Ajouter des vues supplémentaires à la gestion nocturne // ChangeModeController.getInstance().addBackgroundColor(toolbar, R.attr.colorPrimary); //ChangeModeController.getInstance().addBackgroundDrawable(view, R.attr.colorAccent); // ChangeModeController.getInstance().addTextColor(view, R.attr.colorAccent);
Si d'autres attributs non standard définis sont présents lors de la modification du mode nocturne, vous pouvez appeler le code suivant après ChangeModeController.changeDay ou ChangeModeController.changeNight pour assigner des valeurs aux attributs pertinents :
TypedValue attrTypedValue = ChangeModeController.getAttrTypedValue(this, R.attr.zztextColor);
toolbar.setTitleTextColor(getResources().getColor(attrTypedValue.resourceId));
À propos de moi
Un développeur Android à ZhengZhou.
Licence
======= Droits d'auteur 2016 zhangke
Licencié sous la Licence Apache, Version 2.0 (la "Licence"); vous ne pouvez utiliser ce fichier que conformément à la Licence. Vous pouvez obtenir une copie de la Licence sur http://www.apache.org/licenses/LICENSE-2.0 Sauf si la loi applicable ou l'accord écrit le nécessite, le logiciel distribué sous la Licence est distribué sur une BASE "TEL QUEL", SANS GARANTIES OU CONDITIONS DE TOUTE SORTE, expresses ou implicites. Voir la Licence pour la langue spécifique régissant les permissions et les limitations de la Licence.
Les méthodes rapides et simples d'implémentation du mode nuit pour Android que l'éditeur présente ici, espère qu'elles vous seront utiles. Si vous avez des questions, n'hésitez pas à me laisser un message, l'éditeur répondra à temps. Merci également de votre soutien au site de tutoriels de cri.
Déclaration : Le contenu de cet article est issu du réseau, et appartient au propriétaire original. Le contenu est apporté par les utilisateurs d'Internet et téléversé spontanément. Ce site n'appartient pas à la propriété, n'a pas été traité par l'éditeur humain et n'assume aucune responsabilité juridique connexe. Si vous trouvez du contenu suspect de violation de droits d'auteur, veuillez envoyer un e-mail à : notice#oldtoolbag.com (veuillez remplacer # par @ lors de l'envoi d'un e-mail pour signaler une violation, et fournir des preuves pertinentes. Une fois vérifié, ce site supprimera immédiatement le contenu suspect de violation de droits d'auteur.)