android 夜间模式蒙板,夜间模式方法之套一层蒙版

public class NightModeUtils {

public final static int THEME_SUN = 1;

public final static int THEME_NIGHT = 2;

// public final static boolean cheched = false;

// public static int getSwitchDayNightMode(Context context) {

// int mode = getDayNightMode(context);

// return mode == THEME_SUN ? THEME_NIGHT : THEME_SUN;

// }

// public static int getDayNightMode(Context context) {

// SharedPreferences sharedPreferences = getSharedPreferences(context);

// return sharedPreferences.getInt("SUN_NIGHT_MODE", THEME_SUN);

// }

// private static SharedPreferences getSharedPreferences(Context context) {

// return context.getSharedPreferences("NightModeDemo", Context.MODE_APPEND);

// }

public static void onActivityCreateSetTheme(Activity activity) {

boolean checked = (Boolean) SpUtils.get(activity, "night_day", true);

if (checked) {

activity.setTheme(R.style.AppSunTheme);

}else {

activity.setTheme(R.style.AppNightTheme);

}

}

}

上面是选择style中的两种模式的工具类

android:layout_width="match_parent"

android:layout_height="@dimen/pad_height_50" >

android:id="@+id/night_mode_tv"

android:layout_width="match_parent"

android:layout_height="@dimen/pad_height_50"

android:layout_centerVertical="true"

android:layout_marginLeft="@dimen/pad_height_10"

android:layout_marginRight="@dimen/pad_height_3"

android:padding="@dimen/pad_height_10"

android:gravity="center_vertical"

android:drawableLeft="@drawable/yejian"

android:drawablePadding="@dimen/pad_height_10"

android:text="夜间模式"

style="@style/subtitle_text" />

xmlns:switch="http://schemas.android.com/apk/res-auto"

android:id="@+id/night_mode_switch_one"

android:layout_width="wrap_content"

android:layout_height="wrap_content"

android:layout_alignParentRight="true"

android:layout_centerVertical="true"

android:padding="@dimen/pad_height_10"

android:gravity="center_vertical"

switch:bmHeight="50000dp"

switch:bmWidth="@dimen/pad_height_40" />

添加switch选择按钮布局

night_mode_switch = (UISwitchButton) view.findViewById(R.id.night_mode_switch_one);

boolean checked = (Boolean) SpUtils.get(getActivity(), "night_day", true);

night_mode_switch.setChecked(checked);

night_mode_switch.setOnCheckedChangeListener(new OnCheckedChangeListener() {

@Override

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

if (isChecked) {

SpUtils.put(getActivity(), "night_day", true);

Log.d("zhsy", "night==");

night();

} else {

SpUtils.put(getActivity(), "night_day", false);

Log.d("zhsy", "day==");

day();

}

}

});对选择按钮控件的监听

private void night() {

if (mNightView == null) {

mNightView = new TextView(getActivity());

mNightView.setBackgroundColor(0xaa000000);

}

WindowManager.LayoutParams lp = new WindowManager.LayoutParams(LayoutParams.MATCH_PARENT,

LayoutParams.MATCH_PARENT, WindowManager.LayoutParams.TYPE_APPLICATION,

WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE | WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE,

PixelFormat.TRANSLUCENT);

lp.gravity = Gravity.BOTTOM;

lp.y = 10;

try {

mWindowManager.addView(mNightView, lp);

} catch (Exception ex) {

}

}

private void day() {

try {

mWindowManager.removeView(mNightView);

} catch (Exception ex) {

}

}通过WindowManager控制蒙版的添加和删除来模拟夜间和白天的模式

NightModeUtils.onActivityCreateSetTheme(getActivity());

在oncreate方法中调用控制切换主题的方法

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值