简单的日间模式夜间模式

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.view.Gravity;
import android.view.View;
import android.view.Window;
import android.view.WindowManager;
import android.view.WindowManager.LayoutParams;
import android.widget.ImageView;
import android.widget.TextView;

/**
* Created by Mr雷 on 2016/6/23.
*/
public class DayOrNight extends FragmentActivity {
public WindowManager mWindowManger;

// 设置夜间模式
public SharedPreferences skinSp;
public final static String DAY = "day";
public final static String NIGHT = "night";
public boolean isDay;
public View myView;

public ImageView imageView_night;

public TextView text_night;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
mWindowManger=(WindowManager) getSystemService(WINDOW_SERVICE);
init();
}

// 日间夜间模式切换
public void init() {
skinSp = getSharedPreferences("skinchange", MODE_PRIVATE);
String mode = skinSp.getString("skin","");
if (mode != null || !mode.equals("")) {
if (mode.equals(NIGHT)) {
night();
isDay = false;
} else {
day();
isDay = true;
}
}
}

public void night() {
@SuppressWarnings("deprecation")
WindowManager.LayoutParams params = new WindowManager.LayoutParams(
android.view.ViewGroup.LayoutParams.FILL_PARENT, android.view.ViewGroup.LayoutParams.FILL_PARENT,
LayoutParams.TYPE_APPLICATION,
WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE
| WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,
PixelFormat.TRANSLUCENT);
params.gravity = Gravity.CENTER;
// params.y = 10;
if (myView == null) {
myView = new View(this);
myView.setBackgroundColor(0x80000000);
}
mWindowManger.addView(myView, params);
Editor edit = skinSp.edit();
edit.putString("skin", NIGHT);
edit.commit();
}

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

}
@Override
public void onDestroy() {
super.onDestroy();
String mode = skinSp.getString("skin", "");
if (mode.equals(NIGHT)) {
removeSkin();
}
}

public void removeSkin() {
if (myView != null) {
mWindowManger.removeView(myView);
}
}
}

-------------------------------------------实现------------------------------------------------

String mode = skinSp.getString("skin","");
if (mode != null || !mode.equals("")) {
if (mode.equals(NIGHT)) {
imgMode.setImageResource(R.drawable.mode_night);
tvMode.setText("夜间模式");
day();
isDay = true;
} else {
imgMode.setImageResource(R.drawable.mode_day);
tvMode.setText("日间模式");
night();
isDay = false;
}
}

时间: 2024-10-06 03:36:36

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

【android】夜间模式简单实现

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

开源中国源码学习(五)——切换皮肤(日间模式和夜间模式)

在开源中国客户端源码的侧滑菜单栏里有一个模式切换的选项,可以完成夜间模式和日间模式的相互转换. 一.功能介绍 在侧滑菜单栏里点击日间或者夜间后,客户端的皮肤可以发生变化,来达到保护眼睛的作用. 二.详细介绍 这是在MainActivity的onCreate方法中的一段代码,这段代码完成了读取本地配置中存储的日间模式和夜间模式信息,从而回显到客户端中. 读取本地配置信息,在应用启动时,回显至客户端 @Override protected void onCreate(Bundle savedInst

夜间模式的实现

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

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

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

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简单的夜间模式

现在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

ReactJS React+Redux+Router+antDesign通用高效率开发模板,夜间模式为例

工作比较忙,一直没有时间总结下最近学习的一些东西,为了方便前端开发,我使用React+Redux+Router+antDesign总结了一个通用的模板,这个技术栈在前端开发者中是非常常见的. 总的来说,我这个工程十分便捷,对于初学者来说,可能包含到以下的一些知识点: 一.React-Router的使用 Router是为了方便管理组件的路径,它使用比较简单,一般定义如下就行,需要注意的是,react-router的版本有1.0-3.0,各个版本对应的API大致相似,但也有不同,我使用的是2.X的,

DKNightVersion的基本使用(夜间模式)

DKNightVersion下载地址: https://github.com/Draveness/DKNightVersion 基本原理就是利用一个单例对象来存储颜色, 然后通过runtime中的objc_setAssociatedObject和objc_getAssociatedObject来完成两个对象间传递要保存的颜色(纯属个人看法) 下面是gif效果图: 下面是代码部分: import UIKit class ViewController: UIViewController { @IBO