android简单的夜间模式

现在android项目values下打

attrs.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
   <attr name="bookimage" format="reference|color" />
    <attr name="tvcolor" format="reference|color" />
</resources>

style.xml

<?xml version="1.0" encoding="utf-8"?>
<resources>
        <!-- 默认风格 -->
    <style name="BrowserThemeDefault" parent="@android:style/Theme.Black.NoTitleBar">
        <item name="bookimage">@android:color/white</item>
         <item name="tvcolor">@android:color/darker_gray</item>
    </style>

    <!-- 夜间模式 -->
    <style name="BrowserThemeNight" parent="@android:style/Theme.Black.NoTitleBar">
        <item name="bookimage">@android:color/transparent</item>
         <item name="tvcolor">@android:color/white</item>
    </style>
</resources>

layout下activity_main

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"

    android:layout_width="match_parent"
    android:layout_height="match_parent"       //界面颜色改变
      android:background="?bookimage"
     >

    <TextView
        android:id="@+id/textView1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="@string/hello_world"         //字体颜色改变
        android:textColor="?tvcolor"/>

    <Button
        android:id="@+id/button1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerHorizontal="true"
        android:layout_centerVertical="true"        //监听方法
        android:onClick="btonclick"
        android:text="日/夜间模式切换" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/textView1"
        android:layout_centerHorizontal="true"
        android:layout_marginTop="116dp"
        android:onClick="btonclick2"
        android:text="跳转其他页面" />

</RelativeLayout>

MainActivity

package com.example.zdndemo;

import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;

public class MainActivity extends Activity {
    private static boolean blFlag = false;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        SharedPreferences preferences = getSharedPreferences("default_night",
                MODE_PRIVATE);
           blFlag = preferences.getBoolean("default_night",true);
        if (blFlag) {
             this.setTheme(R.style.BrowserThemeDefault);
        }
        else {
            this.setTheme(R.style.BrowserThemeNight);
        }
        //上面的代码必须要放在setContentView之上

        setContentView(R.layout.activity_main);
    }

    public void btonclick(View view) {
        SharedPreferences preferences = getSharedPreferences("default_night",MODE_PRIVATE);
        Editor editor = preferences.edit();
        if (blFlag) {
            this.setTheme(R.style.BrowserThemeNight);
            blFlag =false;
            editor.putBoolean("default_night",false);
        } else {
            this.setTheme(R.style.BrowserThemeDefault);
            blFlag = true;
            editor.putBoolean("default_night",true);

        }
      // 提交修改
         editor.commit();
        this.setContentView(R.layout.activity_main);     //不行的话在跳下本页面
    }

    public void btonclick2(View view) {
        Intent intent = new Intent();
        intent.setClass(this, breakactivity.class);
        startActivity(intent);
    }
}
时间: 2024-10-02 00:29:21

android简单的夜间模式的相关文章

【android】夜间模式简单实现

关于阅读类的app,有个夜间模式真是太重要了. 那么有两种方式可以实现夜间模式 1:修改theme,重启activity 优点:正儿八经的夜间模式,配色看着舒服 缺点:图片刺眼.闪屏 2:使用一个带黑色带透明度的View,盖在现有的activity上,效果类似你带上墨镜,看着太阳不刺眼. 优点:不用重启activity,不闪屏:加上透明度过渡动画,模式之间切换非常舒服,解决了1中,白底图片依旧刺眼的问题.: 缺点:配色没变化,就算带上墨镜,白天依旧是白天. 因此,本方案整合了两种解决方案.在夜间

Android 之夜间模式(多主题)的实现思路

实现思路 多数App由于历史原因当对其进行夜间模式的功能改造时,工作量是比较大的,所以在真正开始着手实现前,我们还是应该先明确夜间模式(多主题)到底有多少实现的思路以及它们的优劣,这样才可以有效的避免项目延期的情况出现. 自定义attr属性. 这是最基础的方法,就是通过自定义attr属性,在不同的theme中进行不同的实现,然后在layout和style中调用.这种方法改代码改动量比较大,而且根据不同的主题,drawable(5.0以上不用),selector等xml文件必须要相应的定义多份,因

android 高仿网易新闻夜间模式

网易新闻有一个小功能,功能虽小,但看的出来大公司的产品设计确实很不错,今天就实现下改功能,如果用户点击选择了夜间模式或者日间模式,那么所有的activity背景都要变,其实android源码给每个activity 内容区域都定义了一个id,就是android.R.id.content,因为所有的activity背景要变色,因此肯定要写一个基类,代码如下: public class BaseActivity extends Activity { protected void onCreate(an

Android实现夜间模式小结

随着APP实现的功能越来越丰富, 看小说看视频上网等等, 如今不少人花在手机平板等移动终端上的时间越来越长了. 但手机和平板的屏幕并不像Kindle那类电纸书的水墨屏那么耐看, 因为自发光的屏幕特性, 我们长期盯着屏幕看easy眼睛酸痛疲倦, 因此各种护目模式, 夜间模式在移动APP上得到广泛应用, 这的确也是一个贴心的小功能. 所以这次我们探讨下几种实现方式, 一起学习总结下: 1, 利用屏幕亮度 当夜间使用手机等终端, 直接降低屏幕亮度, 能降低光线强度对眼镜的刺激, 这也是最简单, 也相对

Android夜间模式实现

查看我的全部开源项目[开源实验室] 欢迎加入我的QQ群:[201055521],本博客客户端下载[请点击] 本文原创,转载请注明地址:http://blog.kymjs.com/ 最近在做一个Android夜间模式的功能,又重新研究了一下Theme机制.贯彻我的风格,以解决问题为目标,写了个小Demo,简单了实现了切换夜间模式,为大家讲解. 在Activity中有一个方法叫setTheme(),可以设置Activity的Theme,当然Application类中也有相同的方法,也可以在Appli

Android主题切换—夜间/白天模式探究

现在市面上众多阅读类App都提供了两种主题:白天or夜间. 上述两幅图片,正是两款App的夜间模式效果,所以,依据这个功能,来看看切换主题到底是怎么实现的(当然现在github有好多PluginTheme开源插件,很多时候可以使用这些插件,不过我并不想讲怎么用那些插件,正所谓会用轮子还不如会造轮子). 关于更换主题和换肤 这里提到是做换主题功能,当然与之类似的就是换肤,换肤现在比较流行的是采用插件化动态加载技术来实现的,这样可以起到热插拔作用,需要皮肤时候用户自主的在网上下载便是了,不用皮肤时便

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 MainActiv

Android应用开发中的夜间模式实现(一)

前言 在应用开发中会经常遇到要求实现夜间模式或者主题切换具体例子如下,我会先讲解第一种方法. 夜间模式 知乎 网易新闻 沪江开心词场 Pocket 主题切换 腾讯QQ 新浪微博 我今天主要是详述第一种的实现方式: 首先,应用的Application要继承自定义的Theme 1 2 3 4 5 6 <application android:allowBackup="true" android:icon="@drawable/ic_launcher" androi

简单的日间模式夜间模式

package com.example.topnews.topnews; import android.content.SharedPreferences;import android.content.SharedPreferences.Editor;import android.graphics.PixelFormat;import android.os.Bundle;import android.support.v4.app.FragmentActivity;import android.v