1.下载app的hap包multipleTheme.hap(位于:https://gitee.com/chinasoft2_ohos/MultipleTheme/tree/1.0.0 )
在sdk6,DevEco Studio2.2 beta1下项目可直接运行 如无法运行,删除项目.gradle,.idea,build,gradle,build.gradle文件, 并依据自己的版本创建新项目,将新项目的对应文件复制到根目录下
第一步:在项目的pattern.json声明自定义属性(各种模式都会用到的属性)
Setup 1:declare attribute in pattern.json
"pattern": [
{
"name": "base",
"value": [
{
"name": "width",
"value": "100vp"
},
{
"name": "background_element",
"value": "$graphic:background_ability_main"
},
{
"name": "text_color",
"value": "#ffff0000"
},
{
"name": "text_size",
"value": "200fp"
}
]
}
]
第二步:在项目的theme.json指定各种模式主题下的自定义属性值
Setup 2:declare attribute in theme.json
"theme": [
{
"name": "theme1",
"value": [
{
"name": "main_background",
"value": "$graphic:background_ability_main"
},
{
"name": "main_text_color",
"value": "$color:color_1"
},
{
"name": "second_background",
"value": "#0000ff"
},
{
"name": "second_text_color",
"value": "#00ff00"
}
]
}
第三步:在页面布局文件里使用自定义属性值
Setup 3:use attribute in layout
<derson.com.multipletheme.colorUi.widget.ColorTextView
ohos:height="match_content"
ohos:width="match_content"
ohos:text="$string:HelloWorld"
ohos:text_size="14fp"
ohos:text_color="#000"
ohos:theme_prefix="main"/>
第四步:在基类的onCreate方法里添加切换主题模式的逻辑代码
Setup 4:add the code of switch theme-mode in base ability
@Override
public void onStart(Intent intent) {
super.onStart(intent);
setUIContent(getLayoutId());
if(SharedPreferencesMgr.getInt("theme", 0) == 1) {
setTheme(ResourceTable.Theme_theme2);
} else {
setTheme(ResourceTable.Theme_theme1);
}
ColorUiUtil.changeTheme(getRootView(), getTheme());
第五步:调用工具类方法切换主题模式
Setup 5:switch theme-mode in code
ColorUiUtil.changeTheme(getRootView(), getTheme());
###
第六步:针对切换主题模式时需要立即更新页面ui的页面,需要使用框架里的封装控件
Setup 6:use customize-component of framework at the ability that need update ui when switch theme-mode.
CodeCheck代码测试无异常
CloudTest代码测试无异常
病毒安全检测通过
当前版本demo功能与原组件基本无差异
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Комментарии ( 0 )