android基础教程之夜间模式实现示例
packageorg.david.dayandnightdemo.cor;
importandroid.os.Bundle;
importandroid.app.Activity;
importandroid.content.Context;
importandroid.content.SharedPreferences;
importandroid.content.SharedPreferences.Editor;
importandroid.graphics.Color;
importandroid.graphics.PixelFormat;
importandroid.view.Gravity;
importandroid.view.View;
importandroid.view.View.OnClickListener;
importandroid.view.WindowManager;
importandroid.view.WindowManager.LayoutParams;
importandroid.widget.Button;
importandroid.widget.TextView;
publicclassMainActivityextendsActivityimplementsOnClickListener{
privateWindowManagermWindowManager;
privateViewmyView;
privateButtonbtn_dayAndnight;
privateSharedPreferencesskinSp;
privatefinalstaticStringDAY="day";
privatefinalstaticStringNIGHT="night";
privateintflage=0;
@Override
protectedvoidonCreate(BundlesavedInstanceState){
super.onCreate(savedInstanceState);
mWindowManager=(WindowManager)getSystemService(Context.WINDOW_SERVICE);
setContentView(R.layout.activity_main);
init();
}
privatevoidinit(){
skinSp=this.getSharedPreferences("skinchange",Context.MODE_PRIVATE);
btn_dayAndnight=(Button)findViewById(R.id.btn_dayAndnight);
btn_dayAndnight.setOnClickListener(this);
Stringmode=skinSp.getString("skin","");
if(mode!=null||!mode.equals("")){
if(mode.equals(NIGHT)){
night();
}else{
day();
}
}
}
@Override
publicvoidonClick(Viewv){
if(flage%2==0){
night();
btn_dayAndnight.setText("白天模式");
btn_dayAndnight.setTextColor(Color.WHITE);
flage++;
}else{
day();
btn_dayAndnight.setText("夜间模式");
btn_dayAndnight.setTextColor(Color.BLACK);
flage++;
}
}
publicvoidnight(){
WindowManager.LayoutParamsparams=newWindowManager.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=newTextView(this);
myView.setBackgroundColor(0x80000000);
}
mWindowManager.addView(myView,params);
Editoredit=skinSp.edit();
edit.putString("skin",NIGHT);
edit.commit();
}
publicvoidday(){
if(myView!=null){
mWindowManager.removeView(myView);
Editoredit=skinSp.edit();
edit.putString("skin",DAY);
edit.commit();
}
}
publicvoidremoveSkin(){
if(myView!=null){
mWindowManager.removeView(myView);
}
}
@Override
protectedvoidonDestroy(){
super.onDestroy();
Stringmode=skinSp.getString("skin","");
if(mode.equals(NIGHT)){
removeSkin();
}
}
}
布局文件
<RelativeLayoutxmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_dayAndnight"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/btn_changeskin"/>
</RelativeLayout>
相关文章
- Android Treble架构及HIDL添加示例
- android onresume方法,非静态方法’onResume’Android Studio
- strictmode android,Android中的StrictMode
- android中适配器的作用,适配器模式 在Android中的简单理解「建议收藏」
- android启动一个app的命令
- 观察者模式及在Android源码中的应用
- android-短信验证功能,Android实现获取短信验证码的功能以及自定义GUI短信验证详解…
- android短信验证码方案,Android之短信验证码
- 【Android布局】在程序中设置android gravity 和 android layout Gravity属性
- android scaleanimation动画,Android 的ScaleAnimation 缩放动画基本运用
- Android Toast的立即取消与显示「建议收藏」
- java.lang.NullPointerException Attempt to invoke virtual method 'int android.widget.Editor
- 【错误记录】Android 应用安装后出现两个启动图标 ( 排查应用及依赖库中配置了 android.intent.category.LAUNCHER 的 Activity )
- 【ijkplayer】编译 Android 版本的 ijkplayer ③ ( 执行 compile-ffmpeg.sh clean 命令 | 下载并配置 android-ndk-r10e )
- [android] 切换界面的通用处理详解手机开发
- [android] 轮播图-滑动图片标题焦点详解手机开发
- android Universal Image Loader for Android 说明文档 (1)详解手机开发
- android classloader双亲委托模式详解手机开发
- Intel 展示了可在大屏幕显示 Linux 系统的低端 Android 手机
- Android使用Intent传递数据的实现思路与代码
- android图像绘制(二)画布上放大缩小问题
- android仿微信聊天气泡效果实现思路
- Android如何定制vibrator的各种震动模式M具体方法
- Android中的SQL查询语句LIKE绑定参数问题解决办法(sqlite数据库)