文档章节

日间模式切换到夜间模式

小情绪在洒脱
 小情绪在洒脱
发布于 2016/07/28 15:52
字数 310
阅读 188
收藏 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
海淀
程序员
私信 提问
加载中
请先登录后再评论。
Swift百万线程攻破单例(Singleton)模式

一、不安全的单例实现 在上一篇文章我们给出了单例的设计模式,直接给出了线程安全的实现方法。单例的实现有多种方法,如下面: class SwiftSingleton { } 这段代码的实现,在shared中进行条...

一叶博客
2014/06/20
3.3K
16
HTTPS切换工具--HttpsSwitcher

HttpsSwitcher 是一个帮你进行 HTTPS 切换的 Chrome 插件,本工具可以帮你尝试使用https打开指定的域名,点击本插件的浏览器图标后会自动切换本标 签页的http/https状态,并且会记住你的选择...

leehorsley
2013/01/26
924
0
REST/HTTP 工具包--Spray

Spray 是一个开源的 REST/HTTP 工具包和底层网络 IO 包,基于 Scala 和 Akka 构建。轻量级、异步、非堵塞、基于 actor 模式、模块化和可测试是 spray 的特点。 示例代码: val responses: F...

匿名
2013/02/20
7K
0
Swing界面分析和调试工具--Swing Inspector

Swing Inspector是一个Java Swing/AWT用户界面分析和调试工具,功能与firebug类似,具有强大的Swing/AWT用户界面分析和调试相关功能。 适用于从java swing初级到高级的所有开发人员,能够快速...

匿名
2013/03/06
3.3K
0
C++的JSON解析类--JSONVALUE

Jsonvalue 是 C++ 的 JSON 类,用来解析 JSON 到 C++ 对象,也可将对象转成 JSON 字符串。支持 ANSI 和 Unicode。特点: 严格和松散模式 不同数据类型 简单 API 仅依赖 STL 示例代码: JSON...

匿名
2013/03/10
2.9K
1

没有更多内容

加载失败,请刷新页面

加载更多

层次聚类与聚类树

聚类分析 在生态学研究当中,有些环境中的对象是连续(或者离散)的,而有些对象是不连续的,聚类的目的是识别在环境中不连续的对象子集,从而探索隐藏在数据背后的属性特征。聚类分析主要处...

SYSU星空
01/11
0
0
几个无聊但你可能忽略的C知识点

来源:公众号【编程珠玑】 作者:守望先生 ID:shouwangxiansheng C语言main函数的写法 标准中,只有下面两种写法: int main (void) { /**body**/ } 以及 int main (int argc, cha...

学以解忧
01/08
0
0
20个实战项目教你掌握OpenCV和图像处理,PDF开放下载

点击上方“小白学视觉”,选择加"星标"或“置顶” 重磅干货,第一时间送达 近期小白学视觉公众号推出了多篇OpenCV实战项目的文章,深受小伙伴们的喜爱。最近有小伙伴推荐,希望可以讲经典的项...

机器学习炼丹术
38分钟前
9
0
吃瓜!挂一个爬虫工作者

原本不打算撕逼的,可总感觉技术人员这么狗,不曝光他不合适。 此人微信号: YGMXMF 描述如下: 鉴于不可抗力因素,我删除了上篇文章! 此人想178买文章(早就关注了,当时没付费观看,现在要...

adminThorn
57分钟前
9
0
聊一聊一道关于线程池的面试题

网络上有这样一道关于线程池的面试题: 1. 高并发、任务执行时间短的业务怎样使用线程池? 2. 并发不高、任务执行时间长的业务怎样使用线程池? 3. 并发高、业务执行时间长的业务怎样使用线程...

黄小斜
今天
0
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部