最近再研究Android应用的夜间模式,总结一下:
夜间模式的主旨就是用代码实现调用不同的.xml文件或者不同的资源文件。当然,皮肤,主题什么的都可以这么实现。
第一种:(sdk2.2+)UiModeManager
傻瓜式的,新建layout-night文件夹,里面加入需要夜间模式的layout.xml文件,然后系统会根据UiMode自动获取layout或者layout-night中的布局文件
UiModeManager是Android SDK2.2提供的一种对于手机UI控制的Manager,其中提供了进入行车(carMode)的方法,其实整个手机硬件内置了集中模式,主要是:UI_MODE_TYPE_UNDEFINED,UI_MODE_TYPE_NORMAL,UI_MODE_TYPE_DESK,UI_MODE_TYPE_CAR,UI_MODE_TYPE_TELEVISION。默认是normal的~虽然UiMode内置了夜间模式,但是只能够在CAR模式的时候运用...也就是说你要试用夜间模式,必须要将currentMode设置成UI_MODE_TYPE_CAR,具体方法如下。
UiModeManager uim = (UiModeManager) getSystemService(Context.UI_MODE_SERVICE);
int i = uim.getCurrentModeType();
if(i != Configuration.UI_MODE_TYPE_CAR){
uim.enableCarMode(0);
}
uim.setNightMode(UiModeManager.MODE_NIGHT_YES);
退出夜间模式:
uim.disableCarMode(0);//这里可传两个参数,0:只退出夜间模式,1:退出应用程序和夜间模式。
这种方法是不可取的...首先2.2+要求太高,其次和CAR模式绑定让人很难hold,知道就好,说不定以后改善好了可以用...
第二种:调用其他apk文件的资源。
这个好处就是可以将夜间模式打包让需要的用户下载,和新浪微博是一个实现方式。将一个只有资源的project A 打包成apk,这个A就是所谓的夜间模式包,用户可以下载下来,重点在本身的project B怎么调用A的资源文件。实现如下:
//获得A的contex是关键。
Context mContext = createPackageContext("com.a", Context.CONTEXT_INCLUDE_CODE|Context.CONTEXT_IGNORE_SECURITY);
Resources mResource = mContext.getResources();
Integer identifer = getResources().getIdentifier("night_background", "drawable", "com.a");
BitmapDrawable db = (BitmapDrawable)mResource.getDrawable(identifer);
拿到bitmap就一切OK了...这个只是提供个思路,如果要做夜间模式,还是写一个比较完整的体系。
其实用反射也可以完成这个动作:顺便贴一下吧:
Class aR = mContext.getClassLoader().loadClass("com.a.R" + "$" + "drawable");
String filed = "night_background";
Field file = aR.getField(filed);
Integer bpd = (Integer)file.get(aR.newInstance());
拿到integer就如上述步骤了...
分享到:
相关推荐
在Android应用开发中,日夜间模式切换是一项重要的用户体验优化功能,它允许用户根据环境光线条件或个人偏好在明亮(日间)和暗淡(夜间)的主题之间自由切换。这一功能通常通过更改应用的颜色方案、字体颜色和背景...
在Android应用开发中,提供夜间模式是提升用户体验的重要方式之一。传统的实现夜间模式通常需要重启Activity,这可能导致界面闪烁,影响用户体验。而“Android-skin-sprite”库提供了一种无需重启Activity就能实现...
标题提到的“Android-这是个方便切换夜间模式的库利用官方夜间模式同时不用重启Activity”是一个旨在简化Android应用夜间模式切换的第三方库。这个库允许开发者在不重新启动Activity的情况下实现夜间模式的即时切换...
It is an experimental project for switching day/night mode on Android. View the demo video on Youtube. This will help you understand the project. Dependencies add nightowllib library to your project ...
在Android开发中,夜间模式是一项重要的功能,它允许用户在暗环境下使用应用时降低屏幕亮度,减轻眼睛疲劳。本文将详细讲解如何通过原生方式在Android应用中实现夜间模式。 首先,我们需要理解Android中的资源多态...
Android夜间模式,通过Theme实现(attrs.xml styles.xml Activity.setTheme()) 效果展示: 如何添加 Gradle添加: 1.在Project的build.gradle中添加仓库地址 allprojects { repositories { ... maven { url ...
这个"Android夜间模式demo"提供了实现这一功能的实例代码,帮助开发者理解如何在应用程序中添加夜间模式并保存用户的设置。 1. **夜间模式的实现原理** - Android夜间模式主要通过改变界面的主题和颜色来实现。...
本篇将详细介绍如何利用CSS注入来实现在Android Webview中切换到夜间模式。 首先,我们需要理解CSS注入的概念。CSS(Cascading Style Sheets)是用于描述HTML或XML(包括如SVG、MathML等各种XML方言)文档样式的...
ThemeDemo日夜间模式切换,页面切换的时候附带动画特效, 关于多主题实现的,大牛这里的做法是继承AppCompatActivity,置换了AppCompatDelegate中AppCompatViewInflater中的createView 方法.实现了对 xml 控件的控制. ...
本教程将详细讲解如何在Android的WebView中实现夜间模式。 首先,我们需要创建一个可以切换主题颜色的机制。在Android中,我们可以通过自定义主题或者使用Material Design的`Theme.MaterialComponents`来实现。在`...
1. **黑暗主题**:Android Q首次引入全局黑暗模式,不仅有利于节省电池,还提供了更好的夜间使用体验。 2. **折叠屏设备支持**:针对新兴的折叠屏设备,Android Q提供了适应性布局和生命周期管理。 3. **隐私保护*...
例如,可以为夜间模式、节日活动或品牌合作设计独特的皮肤,提升用户的参与度和满意度。 六、扩展与优化 除了基本功能外,“Android-skin-support”还允许开发者进行扩展和优化,比如结合云端皮肤库,实现实时下载...
以上就是通过在window上加一层半透明的View来实现Android夜间模式的基本思路。实际开发中,开发者还可以结合SharedPreferences存储用户的夜间模式偏好,以及使用Android的AppCompat库的DarkTheme主题来全局实现夜间...
2. **暗黑模式**:Android 10 引入了全局暗黑模式,不仅适用于系统界面,还能自动或手动切换到支持的应用程序,降低夜间使用设备的亮度,减少眼睛疲劳并节省电池。 3. **手势导航**:Android-29 改进了导航方式,...
>关于多主题实现的,我这里的做法是继承AppCompatActivity,置换了AppCompatDelegate中AppCompatViewInflater中的createView 方法.实现了对 xml 控件的控制. 实现: 实现了日夜模式的切换.(不重启 Acitivity ) 解决...
2. **黑暗模式**:系统级别的黑暗主题不仅减少了屏幕亮度,节省电池,还提供了更好的夜间阅读体验。 3. **手势导航**:Android 10引入了全新的全屏手势导航,取代了传统的三键导航栏,使设备的屏幕显示更加完整。 ...
在Android应用开发中,夜间模式是一项重要的功能,它允许用户在低光照环境下或者根据个人喜好调整应用程序的...总之,实现Android夜间模式是一个涉及多方面技术的综合过程,包括UI设计、系统API调用和跨语言交互等。
除了组件,AppCompat库还提供了许多实用的功能,比如颜色选择器`ColorPicker`、夜间模式切换以及`Snackbar`等。`Snackbar`是一种轻量级的通知方式,它可以短暂显示一条消息,并提供一个简单的操作,比如“Dismiss”...
这个“android夜间模式核心demo”是针对这一功能的具体实现示例,旨在帮助开发者理解和掌握如何在自己的应用中添加夜间模式。下面将详细介绍这个demo的关键知识点。 1. 自定义主题:夜间模式的核心在于切换不同的...
在Android应用开发中,日间/夜间模式切换是提高用户体验的重要功能之一。它允许用户根据环境光线或个人偏好选择合适的界面主题。本项目名为“Android-一个酷炫的日间夜间模式切换按钮”,专注于实现一个美观且实用的...