【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>
效果图:
文章图片
推荐阅读
- 安卓3月21日作业
- Android中广播的简单使用
- Android做下拉刷新的时候,在做些什么
- android OTA升级包制作
- Eclipse 工程迁移到 Android Studio
- 源码分析篇 - Android绘制流程requestLayout()与invalidate()流程分析
- Android镜像文件ramdisk.img,system.img,userdata.img介绍
- Android SDK eclipse开发工具全套离线下载
- Android进程保活-自“裁”或者耍流氓