📌  相关文章
📜  如何在Kotlin中为自定义Android应用程序创建黑暗模式?

📅  最后修改于: 2021-05-10 17:12:04             🧑  作者: Mango

深色模式是一项功能,可让您将应用程序或整个操作系统的颜色主题切换为黑色或接近边缘的颜色。除了振兴疲倦的设计带来的乐趣外,还不妨选择它,因为它使观看设备屏幕的方式更加舒适和放松。常规模式下的典型像素值介于200到255之间。每个以255值发光的像素对应于它可以发射的最大可能光,从而提供更多的功率。类似地,0值对应于最小量,其对应于没有功率被提供给像素。如果使用带OLED显示屏并启用暗模式的智能手机,则也可能会节省一些电池寿命。因此,对于开发人员而言,在所需的应用程序中添加此类功能就变得至关重要。本文希望通过使用可用的库与您分享Android中暗模式的实现。暗模式是优化用户体验以及电池的一个示例。它可以在开发人员期望的任何应用程序上实现。下面的样本GIF给出得到什么我们将在本文中做的想法。请注意,我们将使用Kotlin语言实施此项目。

样本GIF

方法

步骤1:创建一个新项目

要在Android Studio中创建新项目,请参阅如何在Android Studio中创建/启动新项目。请注意,选择Kotlin作为编程语言。

步骤2:对styles.xml文件所做的更改

转到res> values> styles.xml文件,然后将样式父样式更改为“ Theme.AppCompat.DayNight.DarkActionBar ”。以下是styles.xml文件的完整代码。

XML

    
    
  


XML


  
    
    
  


Kotlin
import android.os.Bundle
import android.widget.Switch
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declare the switch from the layout file
        val btn = findViewById(R.id.switch1)
  
        // set the switch to listen on checked change
        btn.setOnCheckedChangeListener { _, isChecked ->
  
            // if the button is checked, i.e., towards the right or enabled
            // enable dark mode, change the text to disable dark mode
            // else keep the switch text to enable dark mode
            if (btn.isChecked) {
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
                btn.text = "Disable dark mode"
            } else {
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
                btn.text = "Enable dark mode"
            }
        }
    }
}


步骤3:使用activity_main.xml文件

现在转到代表应用程序UI的activity_main.xml文件,并创建一个Switch 。此开关应在暗模式和正常模式之间切换。以下是activity_main.xml文件的代码。

XML格式



  
    
    
  

步骤4:使用MainActivity.kt文件

转到MainActivity.kt文件,并参考以下代码。下面是MainActivity.kt文件的代码。在代码内部添加了注释,以更详细地了解代码。

科特林

import android.os.Bundle
import android.widget.Switch
import androidx.appcompat.app.AppCompatActivity
import androidx.appcompat.app.AppCompatDelegate
  
class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
  
        // Declare the switch from the layout file
        val btn = findViewById(R.id.switch1)
  
        // set the switch to listen on checked change
        btn.setOnCheckedChangeListener { _, isChecked ->
  
            // if the button is checked, i.e., towards the right or enabled
            // enable dark mode, change the text to disable dark mode
            // else keep the switch text to enable dark mode
            if (btn.isChecked) {
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)
                btn.text = "Disable dark mode"
            } else {
                AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_NO)
                btn.text = "Enable dark mode"
            }
        }
    }
}

输出:在模拟器上运行

想要一个节奏更快,更具竞争性的环境来学习Android的基础知识吗?
单击此处前往由我们的专家精心策划的指南,以使您立即做好行业准备!