夜间模式 (文字不改变)

package com.chenke.night;

import java.nio.MappedByteBuffer;

import android.os.Bundle;
import android.app.Activity;
import android.content.Context;
import android.content.SharedPreferences;
import android.content.SharedPreferences.Editor;
import android.graphics.Color;
import android.graphics.PixelFormat;
import android.view.Gravity;
import android.view.Menu;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends Activity{
    private WindowManager wm;
    private View myView;
    private Button night;
    private SharedPreferences sp;
    private final static String DAY = "day";
    private final static String NIGHT = "night";
    private int flage = 0;

@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        wm = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
        setContentView(R.layout.activity_main);
        
        
        sp = this.getSharedPreferences("skinchange", Context.MODE_PRIVATE);
        night = (Button) findViewById(R.id.btn_dayAndnight);
        String mode = sp.getString("skin", "");
        if(mode!=null||!mode.equals("")){
            if(mode.equals(NIGHT)){
                night();
            }else{
                day();
            }
        }
        night.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                if(flage%2==0){
                    night();
                    night.setText("白天模式");
                    night.setTextColor(Color.WHITE);
                    flage++;
                }else{
                    day();
                    night.setText("夜间模式");
                    night.setTextColor(Color.BLACK);
                    flage++;
                }
            }
        });
    }
    public void night() {
        WindowManager.LayoutParams params = new WindowManager.LayoutParams(
                LayoutParams.FILL_PARENT, LayoutParams.FILL_PARENT,
                LayoutParams.TYPE_APPLICATION,
                WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
                        | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
                PixelFormat.TRANSLUCENT);
        params.gravity=Gravity.BOTTOM;
        params.y=10;
        if(myView==null){
            myView=new TextView(this);
            myView.setBackgroundColor(0x80000000);
        }
        wm.addView(myView, params);
        Editor edit = sp.edit();
        edit.putString("skin", NIGHT);
        edit.commit();
    }

public void day(){
        if(myView!=null){
            wm.removeView(myView);
            Editor edit = sp.edit();
            edit.putString("skin", DAY);
            edit.commit();
        }
    }
}

时间: 2024-11-07 12:17:59

夜间模式 (文字不改变)的相关文章

博客园客户端(Universal App)开发随笔 -- 样式管理与夜间模式

以今天的眼光来看,一个好应用首先是要有好的用户体验.而好的用户体验最直观的就来自于用户界面.好的用户界面则需要好的设计,更需要好的实现.今天我们就向大家分享一下我们在使用Xaml实现界面设计上的一点心得. 样式管理 我们拿到的设计,大多是一张红线图,布满了距离,字号,色号,事无巨细的量化了我们的用户界面.如果我们就这样把各种属性照搬到上Xaml文件中,那看起来就非常不妙了,比如这样: <TextBlock Text="首页"FontFamily =" Segoe WP

夜间模式的实现

前天在做项目的时候, 遇到一个问题(夜间模式的实现),通常我们在设置夜间模式的时候,简单的做法是使用通知的设计模式,改变各个页面的背景色,然后设置一下透明的效果,可是一个真正的项目,并不能马虎,需要页面效果美观精致.本文参考了github上一个老外写的实现方案,方案参考 经过自己的理解整合,制作出了自己的页面模式的实现. Xcode中floder 与 group 的区别 在这里我先要说明一下:在Xcode中蓝色和黄色文件夹的区别,因为本文就是使用到了蓝色的文件夹,通常蓝色文件夹在IOS中被称为f

iOS - 夜间模式KTJNightVersion

KTJNightVersion:快速部署夜间模式. 当使用DKNightVersion进行部署夜间模式时候发现了一些问题,由于项目比较急,于是按照DKNightVersion的思路重新进行了实现,并加强了部分功能.先已完成测试,由于开发与测试较急,所以存在一些隐蔽的BUG也是在所难免,烦请各位指正.(github.博客园) KTJNightVersion整体设计: 1.模式切换使用通知方式进行广播,监听该广播的为每一个ViewController,该ViewController分别在 viewW

三行代码实现白天夜间模式流畅切换的实现库

Usage xml android:background= ?attr/zzbackground app:backgroundAttr= zzbackground //如果当前页面要立即刷新,这里传入属性名称 比如R.attr.zzbackground 传zzbackground即可 android:textColor= ?attr/zztextColor app:textColorAttr= zztextColor // 演示效果 Usage xml android:background="?

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&qu

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

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

DKNightVersion 的实现 --- 如何为 iOS 应用添加夜间模式

在很多重阅读或者需要在夜间观看的软件其实都会把夜间模式当做一个 App 所需要具备的特性. 而如何在不改变原有的架构, 甚至不改变原有的代码的基础上, 就能为应用优雅地添加夜间模式就成为一个在很多应用开发的过程中不得不面对的一个问题. 就是以上事情的驱动, 使我思考如何才能使用一种优雅并且简洁的方法解决这一问题. 而 DKNightVersion 就是我带来的解决方案. 到目前为止, 这个框架的大部分的工作都已经完成了, 或许它现在不够完善, 不过我会持续地维护这个框架, 帮助饱受实现夜间模式之

Android实现夜间模式小结

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

Android 高级UI设计笔记23:Android 夜间模式之 两种常用方法(降低屏幕亮度+替换theme)

1. 夜间模式 所谓的夜间模式,就是能够根据不同的设定,呈现不同风格的界面给用户,而且晚上看着不伤眼睛.特别是一些新闻类App实现夜间模式是非常人性化的,增强用户体验. 2. 我根据网上的资料 以及自己代码亲测,总结如下两种方法: (1)降低屏幕亮度 (2)替换theme 3. 夜间模式之 降低屏幕亮度: (1)创建一个Android工程,命名为"夜间模式_利用屏幕亮度(App)",如下: (2)首先我们来到主布局之中,如下: 1 <LinearLayout xmlns:andr