zl程序教程

您现在的位置是:首页 >  移动开发

当前栏目

android基础教程之夜间模式实现示例

Android模式 实现 示例 基础教程 夜间
2023-06-13 09:15:18 时间

复制代码代码如下:


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>