文档章节

日间模式切换到夜间模式

小情绪在洒脱
 小情绪在洒脱
发布于 2016/07/28 15:52
字数 310
阅读 4
收藏 0
点赞 0
评论 0

1.MainActivity主界面

package com.example.daynight;

import com.example.daynight.base.BaseActivity;
import android.app.Activity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.CompoundButton;
import android.widget.ToggleButton;
 

public class MainActivity extends BaseActivity {


    //开关按钮
    private ToggleButton mTb;
    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        mTb = (ToggleButton) findViewById(R.id.tb);
        mTb.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                if (isChecked) {
                    //日间模式
                    dayMode();
                }else{
                    //夜间模式
                    nightMode();
                }
            }
        });
    }
}

2.创建一个包,包里面写如下方法

1.BaseActivity方法

package com.example.daynight.base;
import android.app.Activity;
import android.graphics.PixelFormat;
import android.os.Bundle;
import android.view.View;
import android.view.WindowManager;
/**
 * 描述
 *
 * @version 1.0.0
 * @create 2016年7月23日
 */

public class BaseActivity extends Activity {


    // 覆盖在最上面的View
    protected View mCoverView;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        DNApplication app = getApp();
        // 判断是否为夜间模式
        if (app.isNight) {
            nightMode();
        } else {
            // 日间模式
            dayMode();
        }
    }

    /**
     * 日间模式
     */
    protected void dayMode() {

        if (mCoverView != null) {
            getWindowManager().removeViewImmediate(mCoverView);
        }
    }

    /**
     * 夜间模式
     */
    protected void nightMode() {
        if (mCoverView == null) {
            // 如果不存在,则创建一个
            mCoverView = new View(this);
            // argb
            mCoverView.setBackgroundColor(0x80000000);
        }

        // 撑满屏幕
        int matchParent = WindowManager.LayoutParams.MATCH_PARENT;
        // application类型
        int typeApp = WindowManager.LayoutParams.TYPE_APPLICATION;
        // 不可触摸
        int noTouchable = WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
        // 不可获得焦点
        int noFocusable = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE;
        // 透明
        int translucent = PixelFormat.TRANSLUCENT;

        // 构建参数
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(matchParent, matchParent, typeApp, noTouchable | noFocusable, translucent);
        // 添加到window
        getWindowManager().addView(mCoverView, params);

    }

    private DNApplication getApp() {
        return ((DNApplication) getApplication());
    }

}

1.1创建一个类,继承Application方法

此方法如下

package com.example.daynight.base;

import android.app.Application;
 

public class DNApplication extends Application {


    //是否为夜间模式
    public boolean isNight;
    
    @Override
    public void onCreate() {
        super.onCreate();
    }
    
    
}

© 著作权归作者所有

共有 人打赏支持
小情绪在洒脱
粉丝 3
博文 18
码字总数 19251
作品 0
海淀
程序员
MVP 快速开发框架--APP MVP FrameWork

App based on Material Design + MVP + Rxjava + Retrofit + Okhttp + Glide + cache + theme + others 本项目本着简洁的思想,让开发更加简单,抽取出了 core 做为库,可以直接引入进行快捷...

超人爱因斯坦 ⋅ 2016/11/25 ⋅ 0

Android 动态换肤库-Colorful

Colorful 是基于Theme的Android动态换肤库,无需重启Activity、无需自定义View,方便的实现日间、夜间模式。

Mr.Simple ⋅ 2015/11/02 ⋅ 0

Android 夜间模式主题切换方案

由于Android的设置中并没有夜间模式的选项,对于喜欢睡前玩手机的用户,只能简单的调节手机屏幕亮度来改善体验。目前越来越多的应用开始把夜间模式加到自家应用中,没准不久google也会把这项...

IamOkay ⋅ 2016/04/30 ⋅ 0

Android夜间模式切换库--NightModel

NightModel是一个方便切换夜间模式的库,利用官方夜间模式,同时不用重启Activity。 使用要求: 官方包support appcompat 23.2.0 或以上版本 activity 需要继承自 AppCompatActivity 应用按照...

匿名 ⋅ 2016/08/17 ⋅ 0

iOS - 夜间模式KTJNightVersion

KTJNightVersion:快速部署夜间模式。 当使用DKNightVersion进行部署夜间模式时候发现了一些问题,由于项目比较急,于是按照DKNightVersion的思路重新进行了实现,并加强了部分功能。先已完成...

沙漠浮萍 ⋅ 2015/08/09 ⋅ 0

Android一键换肤功能实现

市面上对数的App都提供换肤功能,这里暂且不讲白天和夜间模式 下图是网易云音乐的换肤功能 经典 黑 换肤其实就是替换资源(文字、颜色、图片等) 一、换肤模式: 1.内置换肤 在Apk包中存在多...

夏天吃冰棍 ⋅ 03/18 ⋅ 0

App如何实现夜间模式

我们想模仿网易新闻做夜间模式 我们现在业务涉及到要换的有 字的颜色,某些背景色,部分Button的背景色及点击效果色,部分icon,系统亮度 关于这些业务的实现,我有几个问题。 现在需要美工出...

Jack_李志 ⋅ 2013/11/21 ⋅ 3

iOS 时钟视图--SPClockView

SPClockView 特性如下: 可以设置时区,也可以从列表中选择时区 自动检测日间和夜间,转换时钟的背景 不能用 来规划时间,不能使用任意的 UI 操作 点击来添加和删除时钟 显示时区的名字和数码...

叶秀兰 ⋅ 2014/09/10 ⋅ 0

昌德讯CDX8000 分机长途开通指令

必须使用601-604的分机进行操作 提机,输入#0000 听到嘟声开始编程。 开通长途 输入 44+分机号(01-99)+L值+#,例如开通636号分机的长途,输入 44361# 和 45361# (指令44为开通日间,45为开...

琥哥 ⋅ 2015/10/21 ⋅ 0

android-在开发中使用自定义属性名

在这里我们所说的并非自定义属性,关于自定义属性,请参考之前的文章,讲的很细,今天所说的是自定义“属性名”。 先讲一下,为什么我们需要自定义我们的属性名,加入你再开发一个应用,该应...

pointerException ⋅ 2015/08/07 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

20.zip压缩 tar打包 打包并压缩

6月25日任务 6.5 zip压缩工具 6.6 tar打包 6.7 打包并压缩 6.5 zip压缩工具: zip支持压缩目录 zip压缩完之后原来的文件不删除 不同的文件内容其实压缩的效果不一样 文件内有很多重复的用xz压...

王鑫linux ⋅ 13分钟前 ⋅ 0

double类型数据保留四位小数的另一种思路

来源:透析公式处理,有时候数据有很长的小数位,有的时候由在四位以内,如果用一般的处理方法,那么不足四位的小树会补充0到第四位,这样子有点画蛇添足的感觉,不太好看。所以要根据小数的...

young_chen ⋅ 19分钟前 ⋅ 0

Python 优化 回溯下降算法

使用sympy构造表达式,实现回溯下降算法 画出函数图像,先使用暴力搜索,找到最小值约为2.5左右 然后选定初始点,开始进行回溯搜索,下降方向为负梯度方向 下降的误差与步数大致呈现下面的状...

阿豪boy ⋅ 24分钟前 ⋅ 0

Django配置163邮箱出现 authentication failed(535)错误解决方法

最近用Django写某网站,当配置163邮箱设置完成后,出现535错误即:smtplib.SMTPAuthenticationError: (535, b'Error: authentication failed') Django初始配置邮箱设置 EMAIL_HOST = "smtp.1...

陈墨轩_CJX ⋅ 25分钟前 ⋅ 0

用接口模拟可伸缩枚举(34)

1、枚举的可伸缩性最后证明都不是什么好点子 扩展类型的元素是基本类型实例,基本类型的实例却不是扩展类型的元素,很混乱 目前还没有很好的方法来枚举基本类型的所有元素,及其扩展 可伸缩性...

职业搬砖20年 ⋅ 29分钟前 ⋅ 0

Ubuntu18.04 IDEA快捷键无法使用

IDEA默认的回退到上一视图的快捷键是Ctrl + Alt + Left,在ubuntu中这个快捷键被占用了,在16.04中可以在界面中取消这个快捷键,但是18.04就看不到了,可以使用以下命令解决 gsettings set ...

Iceberg_XTY ⋅ 33分钟前 ⋅ 0

如何解决s权限位引发postfix及crontab异常

一、问题现象 业务反馈某台应用服务器,普通用户使用mutt程序发送邮件时,提示“postdrop warning: mail_queue_enter: create file maildrop/713410.6065: Permission denied”,而且普通用法...

问题终结者 ⋅ 45分钟前 ⋅ 0

Unable to load database on disk

由于磁盘空间满了以后,导致zookeeper异常退出,清理磁盘空间后,zk启动报错,信息如下: 2018-06-25 17:18:46,904 INFO org.apache.zookeeper.server.quorum.QuorumPeerConfig: Reading co...

刀锋 ⋅ 今天 ⋅ 0

css3 box-sizing:border-box 实现div一行多列

<!DOCTYPE html><html><head><style> div.container{ background:green; padding:10px 10px;}div.box{box-sizing:border-box;-moz-box-sizing:border-box; /* Fir......

qimh ⋅ 今天 ⋅ 0

Homebrew简介和基本使用

一、Homebrew是什么 Homebrew是一款Mac OS平台下的软件包管理工具,拥有安装、卸载、更新、查看、搜索等很多实用的功能。简单的一条指令,就可以实现包管理,而不用你关心各种依赖和文件路径...

说回答 ⋅ 今天 ⋅ 0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部