简要说明 Scoops是一个android应用库,主要解决的是多主题实现方案。通过配置多个R.style.Theme ,代码进行动态设置主题,重启当前界面实现。...使用方法 1 项目的build.gradle里面 2 模块的build.gradle里面 3 values里面加入themes.xml 配置一些主题,为了多主题更换使用 4 AndroidManifest.xml...里面 配置上默认主题,这里要注意的是配置的和5里面写的默认的那个要一致 5 MainApp里面 完成初始化,主要设置一系列的主题。...3:这里说下为什么需要在AndroidManifest.xml里面配置默认主题,因为Scoops设计,在判断主题没有更改的情况下,不进行设置主题,因此第一次进来不会设置。所以我们要配置默认主题。...这里的true第三个参数说明设置为默认主题,和我们在AndroidManifest.xml设置的主题一致即可。
github.com/52inc/Scoops/tree/master/scoops/src/main/java/com/ftinc/scoop 可以看到主要文件 Flavor.java 存储每个主题信息...关键方法 Scoop.apply函数 我们来看下public void apply(Activity activity)的具体代码流程 找到当前的主题getCurrentFlavor 判断主题是否是白天夜间模式...,如果是,设置模式 然后使用 另一个apply方法,参数是activity和主题id 设置主题,找到设置的背景色,设置窗体背景,然后返回去,我们自己recreate 重新启动当前界面,实现切换。
使用Scoops 1:MainApp 使用addDayNightFlavor将一个主题设置为DayNight模式 2:在对应的主题里面配置上文本颜色 values里面 values-night
简要说明 通过注释方式,完成多主题的效果更换。可以减少一些代码,使得代码更清晰一些。...5 ColorAdapter适配器 如果需要自己自定义主题更换后的view颜色变换动作(主要是有时候不符合我们的需求,比如我们想动态改文本颜色,高亮色等),我们就需要自定义一个实现ColorAdapter...ColorAdapter定义了两个方法 设置新的颜色值 void applyColor(T view, @ColorInt int color); 获取当前颜色值 int getColor(T view); 6 主题...adapter=XXX.class 如果用默认的 ,请加上adapter = DefaultColorAdapter.class 2 默认的设置ScoopSettingsActivity界面,当设置为默认主题的时候...原因是这个界面指定了主题android:theme=”@style/Theme.AppCompat.Light” 如果我们默认的界面指定的跟这个不一样,则这个设置界面则会在默认主题的时候出错,和设置的效果不一致
白天夜间主题 很多应用都有这个功能,可以选择白天和夜间模式,给用户更好的体验。为此,系统也提供了一种机制,来实现此功能。 模式主要分为四种 夜间 白天 跟随系统 和自动。...具体实现可以去看com.android.support:appcompat-v7:23.0.0源码 夜间和白天模式很好理解。自动就是根据时间判断是否为白天和夜间,自动选择对应主题。...实现原理 通过两组主题,分别放在values和values-night下面,系统根据你设置的模式,对应的去找主题配置值,然后设置上去即可。...textColor和textSize 格式分别为color和dimension 2创建一个目录values-night 3在values和values-night下面新建一个文件themes.xml,同时配置相同的主题...mMode的值可以取以下几个 MODE_NIGHT_FOLLOW_SYSTEM MODE_NIGHT_YES MODE_NIGHT_NO MODE_NIGHT_AUTO 5我们配置下使用的地方 这里的 android
前言 开发APP的时候我们可能使用不同的主题,甚至不同主题下的布局也可能发生改变,这样我们就需要在项目创建的时候生成的主题上进行修改来满足我们的需求。...https://developer.android.google.cn/jetpack/compose/designsystems/material3?...Theme.kt import android.app.Activity import android.os.Build import androidx.compose.foundation.isSystemInDarkTheme...使用MaterialTheme是为了引用的扁平化组件能跟随主题改变样式。 定义LocalAppTheme是为了实现不同的主题可以显示不同的布局。...组件中判断使用的主题 // 使用主题 @Composable fun MyComposable() { // 在这里使用当前的主题进行布局 if(LocalAppTheme.current
android:text="@string/main" /> 主题背景 主题背景是应用于整个应用、Activity或视图层次结构,而非仅仅应用于单个视图的属性集合。...当应用主题背景时,应用或Activity中的每个视图都会应用其支持的每个主题背景属性。除了这些之外,主题还可以将样式应用于非视图元素,例如状态栏和标题栏。...:windowBackground">@color/windowBackground (2)直接引用主题背景 <application android:name=...自定义默认主题 当我们创建一个项目的时候,系统会默认帮我们创建一个主题,然后在我们的Application里面引用。.../item> 常见的主题风格 android:theme="Theme.Light" 背景为白色 android:theme="Theme.Light.NoTitleBar
Android曾经为了优化用户体验,把原生的Holo主题作为Android CTS兼容性测试的一部分,这样每家手机厂商在生产手机的时候都将保留该主题,便于开发者开发出在各个分辨率和机型上兼容的应用。。...但是在我们最近产品的使用Holo主题的时候发现并非如此,有的用户的手机使用该主题后应用Crash,提示有个别资源找不到,还有的手机在使用后整个界面黑屏,还有的就是样式等搭配不合理无法使用。...最后说明的虽然Android要求了Holo主题作为CTS的一部分,不过还有很多手机对此支持不太好,所以还是尽量不要用该主题,如果需要该主题里的一些定义,最好是把该定义单独复制出来,作为当时默认主题的一部分来使用...还有国内的Android市场,看那个混乱的阿,各种恶意竞争,你搞我,我抓你,玩的不亦乐乎。。你们这么做,能活多久呢?什么时候能真正做出来自己的东西呢?
--页面背景色--> @color/light_grey @android:color/black @color/colorAccent @color/text_dark true <item name="<em>android</em>:windowAllowEnterTransitionOverlap
Android的主题换肤 ,可插件化提供皮肤包,无需Activity的重启直接实现无缝切换,可高仿网易云音乐的主题换肤。...关于Android的主题换肤都是个老生常谈的问题了。...其实这个框架是可以拿来直接来用的,直接几行代码基本上就可以解决Android的主题换肤,但是作为一个程序员怎么可以只是简单的知道怎么用就行了吗?如果真是这样就真的太low了。...好了说了这么多,通过本文你可以学到什么,这个可能是大家比较关心的一点 设计出一个基于MaterialDesign风格的App 自己实现一个主题换肤的框架 高仿网易云音乐的主题换肤(ps:其实本来我想以这个作为标题的...load包里面的这两个类讲的差不多了,这里看懂了后面的内容也就是小菜一碟了,我相信你看了这里再去看源码一定会轻松地多。
比如,你可以使用Dialog主题让你的Activity 表现的像一个 对话框: 或者你想让你的背景透明...,使用 透明主题: 如果你喜欢主题,但是想开足马力使用它,那么你可以添加它到你的自定义主题中的... 当应用跑在Android 3.0(API级别11)或者更高以上时,可以让这个样式使用较为新一些的holo风格主题,你可以放置一个可供选择的声明样式防止在res/values-v11这个文件夹下的...XML文件中,但是让这个样式继承自 holo风格的主题: ...获得更多关于样式和主题的引用,你可以看下面的源代码: Android Styles (styles.xml) Android Themes (themes.xml) 那些文件将通过实例帮助你学习。
在 Android 样式系统系列的前几篇文章中,我们介绍了主题背景与样式的区别,以及为什么说通过主题背景和公共主题背景属性来分解您要实现的内容是一个不错的主意,请点击链接回顾: Android 样式系统...| 主题背景和样式 Android 样式系统 | 常见的主题背景属性 这会让我们通过创建更少的布局或样式,以隔离主题背景中的修改。...SPDX-License-Identifier: Apache-2.0 --> <View … android:background="@color/white"/> 相反,您应该使用主题背景属性,...SPDX-License-Identifier: Apache-2.0 --> <selector … <selector … <item android:alpha="0.50" android:color="#80ffffff
在 Android 样式系统系列的前几篇文章中,我们探讨了 样式和主题背景之间的区别,讨论了 使用主题背景和主题背景属性的好处,并重点介绍了一些 常用的主题背景属性。 ...SPDX-License-Identifier: Apache-2.0 --> <ViewGroup … - android:theme="@style/Theme.App.Foo"> + android...:theme="@style/ThemeOverlay.App.Foo"> <Button … - android:theme="@style/Theme.App.Bar"/> + android...每次您声明 android:theme 时,您都在创建一个新的 ContextThemeWrapper,它会分配新的主题背景 (Theme) 和资源 (Resources) 实例。...使用 android:theme 标签为布局中的分段设置主题背景,并仅在您需要调整属性的地方使用主题背景覆盖。
而除了作用域存储之外,深色主题也是Android 10中的一大亮点,并且是需要开发者进行适配的。因此本篇文章我们就来探讨关于深色主题的内容。...因此,一直以来都有强烈的呼声,希望Android能够在系统层面支持夜间模式功能。终于在Android 10.0系统中,Google引入了深色主题这一特性,从而让夜间模式正式成为了官方支持的功能。...为此,我们以后开发的应用程序都应该尽量按照Android系统的要求对深色主题进行支持,不然当用户开启了深色主题之后,只有你的应用还使用的是浅色主题的话,就会显得格格不入。...这里给AppTheme主题增加了android:forceDarkAllowed属性并设置为true,说明现在我们是允许系统使用Force Dark将应用强制转换成深色主题的。...好了,关于Android 10深色主题的适配内容就讲到这里。
Android 开发过程中,总是会遇到这样的场景: 1,app需要交付给不同的客户,每个客户都有自己相关的定制,这时候应该如何构建?...city的数量 * color的数量 * 2 (Debug/Release) = 12 APK多环境开发 Studio工程中,默认有Debug/Release 两种环境,在部分场景中,可能两种环境并不能满足我们的开发需求...signingConfig signingConfigs.release proguardFiles getDefaultProguardFile('proguard-android.txt...android { compileSdkVersion parent.ext.compileSdkVersion variantFilter { variant -> def...' apply plugin: 'kotlin-android' apply plugin: 'kotlin-android-extensions' apply from: "${rootDir}/customization.gradle
现在通用的多屏适配有如下三种 1.match_parent 2.weight 3.多个文件夹(small,normal,large,and extra large),然后分别给出(计算)控件大小 第一个和第二个比较好理解...这次我只需要黑色的文件夹 (3)展示 android工程的文件夹res目录如下,就是多了两个对应的文件夹 ?...布局文件如下 <RelativeLayout xmlns: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:layout_width="@dimen/x160" android:layout_height="@dimen/y240" android
wp-config.php 文件下面添加一行即可: define('WP_DEFAULT_THEME', 'your-theme-folder-name'); 唯一可能存在的一个问题,如果你设置的是子主题...,那么你可能会有问题,需要在 wp-config.php 中额外多增加一个行: define( 'TEMPLATEPATH', '/path/to/themes/your-parent-theme-folder-name
Android 提供了功能强大的样式系统 (Android styling system) 来实现应用的视觉设计,但它也容易被误用。...本系列文章将由 Android 开发者关系团队的工程师 Nick Butcher 和 Chris Banes 共同撰写,与各位开发者们共同揭开 Android 样式系统的神秘面纱,帮助您高效编写时尚的应用界面...SPDX-License-Identifier: Apache-2.0 --> <Button … android:gravity="center_horizontal" android:textAppearance...什么是主题背景? 主题背景是一组命名的资源的集合,这些资源可以被样式或者布局文件等引用。它们提供了一种对 Android 资源的语义名称 (Sematic name),能够让您在其他地方引用这些资源。...-- AndroidManifest.xml --> <application … android:theme="@style/Theme.Plaid"> <activity … android
废话不说先看效果: 创建ColorTheme类用于主题更换: public class ColorTheme { AppCompatActivity ap; public ColorTheme...); newTheme.loadTheme(); setContentView(R.layout.activity_main); 重点: 要现在res/value/style中设计主题的样式
android日夜间模式切换相比大家都接触过,我之前也经常用,但今天想给大家推荐一个google推荐的实现方式,实现起来比较简单,就是咱们今天的主角主题-----Theme.AppCompat.DayNight...需要提供的坐标权限如下: 1.如何使用Theme.AppCompat.DayNight。...1.3 如何引用我们自定义theme的属性 控件引用我们自定义的属性的格式: android:需要修改的属性="?attr/属性名称" 如图: ?...如果你的页面中存在webview加载,你应该尽可能使webview加载的页面和你的主题相符这样用户体验好点。 行了,今天就说这么多!
领取专属 10元无门槛券
手把手带您无忧上云