>>分享Android开发相关的技术 书籍支持  卫琴直播  品书摘要  在线测试  资源下载  联系我们
发表一个新主题 开启一个新投票 回复文章 您是本文章第 19445 个阅读者 刷新本主题
 * 贴子主题:  Android Application Theme的实现及管理 回复文章 点赞(0)  收藏  
作者:Jacky    发表时间:2020-03-31 21:22:28     消息  查看  搜索  好友  邮件  复制  引用

   Android Application Theme的实现

一, 原理

     1, theme 的形式

      1-1 内置theme (一组特定前缀后缀的图片)

      1-2 外置theme (只包含规范命名图片的apk)

     2, 实现

     根据特定theme获取指定图片资源,并设置在view上。

     步骤:

     2-1 获得指定包名的Context

     2-2 通过Context 获得指定theme 的图片资源

代码如下:
public Context getThemeContext() {

     if (mType == ThemeManager.THEME_TYPE_NATIVE)

            return mDefContext ;

     if (mContext != null)

            return mContext ;

     if (TextUtils.isEmpty( mPkg)

                 || mDefContext.getPackageName().equals(mPkg ))

            mContext = mDefContext;

     try {

            mContext = mDefContext.createPackageContext(mPkg ,

              Context. CONTEXT_INCLUDE_CODE

                  | Context.CONTEXT_IGNORE_SECURITY );

    } catch (NameNotFoundException e) {

           e.printStackTrace();

    }

     return mContext ;

  }

           2-3 其他事件

      Theme的安装和卸载会影响theme列表,需要处理。

      Theme的切换需要update()

     二, 关注点

1, 本质

      Theme架构完成之后,剩余的工作就是图片资源的管理。

     1-1 规范的命名

      通过名字直接定位到具体页面的具体图标,这是目标。所以命名上的冗长是必须的。设计师和工    程师之间,会节约大量的沟通成本。

参看之前blog: http://mikewang.blog.51cto.com/3826268/1020693

         1-2 流程

      大约完成几个theme之后,设计师和工程师会有基本的感觉,有一些重复的工作。相关人员,参与相应的讨论,优化流程。

     设计师:

         设计方案的分类,基本类型涵盖三类

         使用ps模板,省却命名的时间(经验证明)

     工程师:

         功能的细分,也有相应的模板。比如menu的实现有两种方式,则准备

         对UI的敏感,能迅速发现ui的错误,这需要时间培养。之前有总结,参看博文:

http://mikewang.blog.51cto.com/3826268/1003333

     其他:鱼与熊掌的问题:图片资源的复用/额外的筛选工作量

复用包括两方面:

      一,复用主程序资源,比如背景

      二,theme内部资源的复用,比如back键

    一旦涉及复用,其实每一套theme的图片的总数是不定的,需要筛选,

很麻烦,工作量不少。我现在倾向于设计师给出全版本的图。这样工程师

的工作只需要调图即可。如果按照这个工作流程,出去设计一个theme

半天就可以完成发布。

     2, 架构的兼容性

     2-1 以设计为先导,用测试保证兼容性

     Theme的前提就是follow设计师的设计,所以代码上必须保持灵活性或者兼容性

以保证不同的设计能在一个架构下实现。所以至少在三类设计下测试,保证兼容性。

因为一旦发布出去,此主程序和此theme便产生一一对应的关联,未来主程序对一

Theme的兼容性修改,都有可能导致其他theme不兼容。

         2-2 主程序的升级和theme 的升级

     当主程序不断增加新功能,对应的增加新UI元素。而已发布的theme需要增加一

些图片。通过定升级的协议,保证升级的提醒。

    本文主要从技术点和项目管理方面谈了谈Theme,希望有所帮助。

    附件给出theme workflow,需要修改文件名,删除后面的rar即可。


    附件:http://down.51cto.com/data/2362917
----------------------------
原文链接:https://blog.51cto.com/mikewang/1208035

程序猿的技术大观园:www.javathinker.net



[这个贴子最后由 flybird 在 2020-04-08 09:08:21 重新编辑]
  Java面向对象编程-->图形用户界面(下)
  JavaWeb开发-->自定义JSP标签(Ⅰ)
  JSP与Hibernate开发-->Java对象持久化技术概述
  Java网络编程-->基于UDP的数据报和套接字
  精通Spring-->创建综合购物网站应用
  Vue3开发-->虚拟DOM和render()函数
  Android Broadcast receiver 编程
  实用程序:android 处理图片工具
  Android 安装实战
  Android SearchView 搜索框
  Android自定义组件
  在Window中下载和安装Android源代码
  Android多线程断点续传
  Android ListView高度问题
  Android Socket通信
  Android OpenGL ES2.0学习:基础三角形案例
  Android Camera2.0 结合ImageReader拍照并解决图片偏转问题
  自定义ViewGroup和FrameLayout实现轮播图(包括底部小圆点)
  Android端使用OpenGL ES加载OBJ文件数据
  Android网络编程之Http通信
  Android adb你真的会用吗?
  更多...
 IPIP: 已设置保密
楼主      
1页 0条记录 当前第1
发表一个新主题 开启一个新投票 回复文章


中文版权所有: JavaThinker技术网站 Copyright 2016-2026 沪ICP备16029593号-2
荟萃Java程序员智慧的结晶,分享交流Java前沿技术。  联系我们
如有技术文章涉及侵权,请与本站管理员联系。