设置简单的夜间模式
2016-06-27 08:21
337 查看
package com.example.day_nigth; import android.annotation.SuppressLint; import android.app.Activity; import android.content.Intent; import android.content.SharedPreferences; import android.content.SharedPreferences.Editor; import android.graphics.PixelFormat; import android.os.Bundle; import android.view.Gravity; import android.view.View; import android.view.WindowManager; import android.view.View.OnClickListener; import android.view.WindowManager.LayoutParams; import android.widget.ImageView; import android.widget.TextView; public class MainActivity extends Activity { private WindowManager mWindowManger; // 设置夜间模式 private SharedPreferences skinSp; private final static String DAY = "day"; private final static String NIGHT = "night"; private boolean isDay; private View myView; private ImageView imageView_night; private TextView text_night; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mWindowManger = (WindowManager) getSystemService(WINDOW_SERVICE); imageView_night = (ImageView) findViewById(R.id.image_night); text_night = (TextView) findViewById(R.id.text); imageView_night.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { if (isDay) { night(); imageView_night .setImageResource(R.drawable.dayicon_leftdrawer_normal_night); text_night.setText("日间"); } else { day(); imageView_night .setImageResource(R.drawable.nighticon_leftdrawer_normal); text_night.setText("夜间"); } isDay = !isDay; skinSp.edit().putBoolean("isDay", isDay).commit(); } }); init(); } public void next(View v) { startActivity(new Intent(this, SecondActivity.class)); } // 日间夜间模式切换 private 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; } } } @SuppressLint("ResourceAsColor") private void night() { @SuppressWarnings("deprecation") 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.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(); } private 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); } } }
//布局文件
相关文章推荐
- display,opacity,visibility,position隐藏元素的实质
- 今天又是新的一周,把考勤做一下吧。
- block没那么难(三):block和对象的内存管理
- 欢迎使用CSDN-markdown编辑器
- IE中自动安装用户数字证书
- 从ImageLoader来理解设计原则
- sql中having的使用
- Java 数据库操作
- 自定义View
- 上周热点回顾(6.20-6.26)
- HttpConnection 联网请求2
- Java连接access数据库
- 通过CertEnroll在CA上(1创建证书请求2得到证书3安装证书)
- ASP.Net 对xml文件的读写,添加,修改,删除操作
- DrawerLayout抽屉控件
- ASP.Net中,如何自动保存文件到指定位置
- 天使之城(codevs 2821)
- 利用Aspose.Word控件和Aspose.Cell控件,实现Word文档和Excel文档的模板化导出
- 学习使用外部模块
- .Net+MySQL的开发(数据库访问)