文档章节

日间模式切换到夜间模式

小情绪在洒脱
 小情绪在洒脱
发布于 2016/07/28 15:52
字数 310
阅读 4
收藏 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
1K
0
android打飞机游戏、MVP句子迷App、悬浮窗、RxJava+Retrofit、加载动画、定制计划App等源码

Android精选源码 微信打飞机(http://www.apkbus.com/thread-604183-1-1.html) android进度设置加载效果源码(http://www.apkbus.com/thread-604219-1-1.html) Android新手引导库EasyGuide(htt......

Android爱开源
12/04
0
0
Android 动态换肤库-Colorful

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

Mr.Simple
2015/11/02
579
0
Android 夜间模式主题切换方案

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

IamOkay
2016/04/30
2.3K
0
Android夜间模式切换库--NightModel

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

匿名
2016/08/17
154
0

没有更多内容

加载失败,请刷新页面

加载更多

rabbitmq学习

使用docker安装rabbit docker run -d --hostname my-rabbit --name rabbit -p 8080:15672 rabbitmq:management--hostname:指定容器主机名称--name:指定容器名称-p:将mq端口号映射到本地...

元谷
19分钟前
0
0
想知道谁是你的最佳用户?基于Redis实现排行榜周期榜与最近N期榜

本文由云+社区发表 前言 业务已基于Redis实现了一个高可用的排行榜服务,长期以来相安无事。有一天,产品说:我要一个按周排名的排行榜,以反映本周内用户的活跃情况。于是周榜(按周重置更新...

腾讯云加社区
22分钟前
1
0
函数计算性能福利篇(二) —— 业务冷启动优化

继前一篇《函数计算性能福利篇——系统冷启动优化》,我们再来看看近期函数计算推出的 Initializer 功能之后,带来的一波高能性能优化成果。 背景 函数计算是一个事件驱动的全托管 serverle...

阿里云官方博客
27分钟前
1
0
开源版本说明

1527
29分钟前
2
0
Mysql经验-------持续更新

单表行数超过 500 万行或者单表容量超过 2GB,才推荐进行分库分表。 说明:如果预计三年后的数据量根本达不到这个级别,请不要在创建表时就分库分表。

DoLo-lty
31分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部