我正在开发一个包含2个主题和图片的应用程序,我用它作为皮肤。我可以在代码中设置整个活动的主题。我的问题是,当涉及到图片时,我不知道如何正确分离皮肤。例如,我有两个主题(黑白),我有一组特定于这些主题的图片。我如何分离图片,以便我可以从代码中设置皮肤的主题和图像?有没有办法在android中管理皮肤?
0
A
回答
2
对不起。我误解了这个问题。我保留了以前的答案,以便评论具有自然流畅性。
在这种情况下,我们有一个Branding.java类。这个类需要一个品牌名称(主题,在你的情况),并产生不同的价值和字符串,将独特的主题。举例来说,您可以将您的Splash图片命名为dark_theme_splash.png和light_theme_splash.png。当加载该drawable时,您可以调用Branding.getSplash(),并根据当前选定的主题返回一个drawable。
public static Drawable getSplash() {
switch(MYApplication.Theme){
case LIGHT:
return MYApplication.res.getDrawable(R.drawable.light_theme_splash);
}
return MYApplication.res.getDrawable(R.drawable.dark_theme_splash);
}
而且在品牌你会:
public class Branding {
public static final int LIGHT = 0;
public static final int DARK = 1;
然后在你的应用程序,你将有一个int current_theme并将其设置为你想要在飞行的主题。
* 下面这里是老回答回答说,实际上并没有问* 我管理有八个不同主题的应用程序的问题。一些显着不同。迄今为止我找到的最佳解决方案分为两部分。
1.)您的build.xml。由于您正在构建不同的皮肤应用程序,我想他们的.apk将以不同的方式命名。在你的build.xml中,利用不同的目标。例如:
<target name="release-themeone">
<antcall target="-do-release" inheritAll="false">
<param name="app.pkg" value="mapmyfitness" />
<param name="app.pkg.name" value="com.themeone.android2" />
<param name="launcher.icon" value="common_icon_launcher" />
<param name=".app.name" value="DarkTheme+" /> />
</antcall>
</target>
2)这使您可以设置不同的参数为不同的版本。在我的情况下,我们有很多不同的drawable,在各种drawables文件夹中管理它们变得很麻烦。所以在可绘制文件夹本身中,我们放入所有的公共资产。然后创建复制可绘制文件夹结构的绘图之外的文件夹,但包含在主题名称中。例如,文件夹Themeone将包含Drawable,Drawable-hdpi等。这允许我们以这样的方式操纵构建系统,即每个特定目标只拉取它需要的可绘制对象。
<copy todir="bin/${app.pkg}/res/drawable" overwrite="true">
<fileset dir="./brands/${brand.prefix}/drawable"/>
</copy>
<copy todir="bin/${app.pkg}/res/drawable-hdpi" overwrite="true">
<fileset dir="./brands/${brand.prefix}/drawable-hdpi"/>
</copy>
<copy todir="bin/${app.pkg}/res/drawable-mdpi" overwrite="true">
<fileset dir="./brands/${brand.prefix}/drawable-mdpi"/>
</copy>
<copy todir="bin/${app.pkg}/res/drawable-xhdpi" overwrite="true">
<fileset dir="./brands/${brand.prefix}/drawable-xhdpi"/>
</copy>
所有这些都包含在build.xml中的for循环中,它经历了我们拥有的各种构建目标。
希望有所帮助。
相关问题
- 1. 有没有办法声明皮肤内联?
- 2. android模拟器没有皮肤
- 3. 有没有办法在ActionScript中以编程方式添加Flex皮肤?
- 4. 有没有什么办法可以从皮肤中覆盖Default.aspx的功能?
- 5. JavaFX2有没有预制皮肤?
- 6. 有没有皮肤/ WinForms .NET的主题?
- 7. Richfaces4皮肤没有得到反映
- 8. Ruby on Rails:CSS和皮肤管理
- 9. 实体管理器没有办法getCriteriaBuilder()
- 10. 有没有办法激活django管理网站没有admin.py
- 11. 有没有办法获得当前应用程序中所有皮肤类的列表?
- 12. 无法皮肤DateSpinner
- 13. 有没有办法重新排序SQLite管理器中的列?
- 14. 有没有办法在custom_active管理行动,以跳过认证
- 15. 有没有办法在控件上蒙皮扩展器?
- 16. 有没有办法优化管理单元对象算法?
- 17. 有没有办法从EntityManager获取所有的管理实体
- 18. Android皮肤布局文件语法
- 19. 有没有办法在没有使用WMI的情况下管理Microsoft DNS?
- 20. 皮肤选项菜单Android
- 21. 有没有办法用SQL Management管理模式?
- 22. 有没有办法让facebook标签只显示给管理员?
- 23. 有没有办法获得flink taskmanagers的任务管理器ID
- 24. 有没有办法从IIS 7打开Windows资源管理器?
- 25. 有没有办法确定连接管理?
- 26. 有没有办法用RxJS来管理并发?
- 27. 有没有办法让休眠自动管理数据库?
- 28. 有没有办法在Perl中检查Windows中的管理员权限?
- 29. 皮肤在DotNetNuke的
- 30. 使用皮肤没有嵌入在CSS文档和瑞士法郎在flex
但我只是建立一个apk。我希望能够动态地改变它们。就像我选择黑色皮肤一样,只会显示与此皮肤相关的所有图像,而不是显示在更改主题前显示的图像。 –