簡體   English   中英

當應用程序首次啟動時,我如何在第一個活動上實現暗模式

[英]How can i implement dark mode on the first activity while the application launched for the first time

我在第二個活動中使用 SwitchPreference 實現暗模式,在第一個活動中只有一個按鈕將我帶到第二個活動(設置)問題是當應用程序被銷毀並且我再次啟動它時暗模式直到第二個活動啟動才實現。

    //First Activity
    
    public class MainActivity extends AppCompatActivity {
    
        Button button;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
 SharedPreferences sharedPreferences =
                PreferenceManager.getDefaultSharedPreferences( this/* Activity context */);
        Boolean theme = sharedPreferences.getBoolean("darkMode", false);
                
 button=findViewById(R.id.button);
            button.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    Intent intent2=new Intent(MainActivity.this,Settings.class);
                    startActivity(intent2);
                }
            });
    
    
    
        }
    
    }

我知道我應該使用 sharedpreferences 但我不知道如何設置它

//Second Activity

    public class MySettingsFragment extends PreferenceFragmentCompat {
    
        @Override
        public void onCreatePreferences(@Nullable Bundle savedInstanceState, @Nullable String rootKey) {
            setPreferencesFromResource(R.xml.preferences,rootKey);
            SwitchPreference switchPreference=findPreference("darkMode");
    
            if (switchPreference.isChecked()){
    
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
    
            }else {
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
    
            }
    
    
        }
    }

在此處輸入圖像描述

概述:-

您可以通過此 function 更改暗模式或亮模式。

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.HERE_YOUR_MODE);

您可以像這樣訪問模式:

AppCompatDelegate.MODE_NIGHT_YES // for dark mode
AppCompatDelegate.MODE_NIGHT_NO // for light mode
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM // for set as your devices theme
AppCompatDelegate.MODE_NIGHT_FOLLOW_SYSTEM // when you are in battery saver

執行:-

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
    Boolean theme = sharedPreferences.getBoolean("darkMode", false);
    if (theme){
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES); // implement here.
    }else{
        AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO); // implement here.
    }
}

那么根據你的代碼,你離取得結果只有一步之遙

您只需要在每個活動的onCreate方法中使用以下代碼

if (isDarkMode){ // isDarkMode is boolean which we can get from preference
    
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES);
    
            }else {
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO);
    
            }
    ```

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM