Android 夜间模式的实现

【Android 夜间模式的实现】男儿欲遂平生志,五经勤向窗前读。这篇文章主要讲述Android 夜间模式的实现相关的知识,希望能为你提供帮助。

package com.loaderman.daynightdemo; import android.os.Bundle; import android.support.v7.app.AppCompatActivity; import android.support.v7.app.AppCompatDelegate; import android.support.v7.widget.Toolbar; import android.view.View; public class MainActivity extends AppCompatActivity implements View.OnClickListener {{ AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_AUTO); }@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(toolbar); findViewById(R.id.btn_auto).setOnClickListener(this); findViewById(R.id.btn_day).setOnClickListener(this); findViewById(R.id.btn_night).setOnClickListener(this); findViewById(R.id.fab).setOnClickListener(this); }@Override public void onClick(View v) { switch (v.getId()) { case R.id.btn_auto: { getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_AUTO); recreate(); break; } case R.id.btn_day: { getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_NO); recreate(); break; } case R.id.btn_night: { getDelegate().setLocalNightMode(AppCompatDelegate.MODE_NIGHT_YES); recreate(); break; } } } }

  activity_main.xml
< ?xml version="1.0" encoding="utf-8"?> < android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:fitsSystemWindows="true" tools:context="com.yanzhenjie.daynight.MainActivity"> < android.support.design.widget.AppBarLayout android:layout_width="match_parent" android:layout_height="wrap_content" android: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:popupTheme="@style/AppTheme.PopupOverlay"/> < /android.support.design.widget.AppBarLayout> < include layout="@layout/content_main"/> < android.support.design.widget.FloatingActionButton android:id="@+id/fab" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_gravity="bottom|end" android:layout_margin="@dimen/fab_margin" android:src="https://www.songbingjia.com/android/@android:drawable/ic_dialog_email"/> < /android.support.design.widget.CoordinatorLayout>

  content_main.xml
< ?xml version="1.0" encoding="utf-8"?> < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" app:layout_behavior="@string/appbar_scrolling_view_behavior" tools:context="com.yanzhenjie.daynight.MainActivity" tools:showIn="@layout/activity_main"> < Button android:id="@+id/btn_auto" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="自动模式" /> < Button android:id="@+id/btn_day" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="日间模式" /> < Button android:id="@+id/btn_night" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="夜间模式" /> < /LinearLayout>

  style.xml
< resources> < style name="AppTheme" parent="Theme.AppCompat.DayNight.DarkActionBar"> < item name="colorPrimary"> @color/colorPrimary< /item> < item name="colorPrimaryDark"> @color/colorPrimaryDark< /item> < item name="colorAccent"> @color/colorAccent< /item> < /style> < style name="AppTheme.NoActionBar"> < item name="windowActionBar"> false< /item> < item name="windowNoTitle"> true< /item> < /style> < style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar" /> < style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light" /> < /resources>

  AndroidMainfest.xml
< ?xml version="1.0" encoding="utf-8"?> < manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.loaderman.daynightdemo"> < application android:allowBackup="true" android:icon="@mipmap/ic_launcher" android:label="@string/app_name" android:supportsRtl="true" android:theme="@style/AppTheme"> < activity android:name=".MainActivity" android:label="@string/app_name" android:theme="@style/AppTheme.NoActionBar"> < intent-filter> < action android:name="android.intent.action.MAIN" /> < category android:name="android.intent.category.LAUNCHER" /> < /intent-filter> < /activity> < /application> < /manifest>

  效果图:
Android 夜间模式的实现

文章图片

 

    推荐阅读