【问题标题】:titanium - android tab icons for density specific resources not working钛 - 密度特定资源的 android 选项卡图标不起作用
【发布时间】:2012-09-07 02:31:24
【问题描述】:

所以遵循这里的概念:

http://docs.appcelerator.com/titanium/2.1/index.html#!/guide/Using_density-specific_resources_on_Android

我创建了一个文件夹

Resources/android/images/

然后在下面是:

high/
medium/
low/

在每个那些中是不同密度的文件(比如about.png)

问题是当我引用它们时:

var aboutTab = Ti.UI.createTab({
    icon: '/images/about.png',
    title: 'about',
    window: about
});

或者正如其他人所建议的那样(即丢失“图像”上的前导斜杠):

var aboutTab = Ti.UI.createTab({
    icon: 'images/about.png',
    title: 'about',
    window: about
});

然后加载应用程序,确保选项卡本身存在...但图标不存在。请注意,如果我有一个普通的旧文件存在于:

Resources/images/about.png

然后图标会出现......但不会。有没有……我在这方面遗漏了什么?

【问题讨论】:

  • 不,我只是暂时避开它。
  • 是的,现在解决了。根据我下面的回答。
  • 是的。我昨天对你的答案投了赞成票:)

标签: android titanium


【解决方案1】:

Plz 冷静地阅读并理解这是与我一起工作的“更多控制”段落。

var aboutTab = Ti.UI.createTab({
    icon: 'images/about.png',     // "/" remove this and try again
    title: 'about',
    window: about
});

请从您的设备或模拟器中删除您的旧应用程序。在此清洁然后构建之后,我认为这是正常工作。

【讨论】:

  • bharal,我也面临同样的问题。 @MRT,你能显示你的目录结构吗?图像的存储位置和所有位置。
  • 实际上,不,这并没有解决我遇到的问题。现在我已经转移到另一个问题上。奇怪的是,在短时间内,android拾取图像,然后忘记它们。
【解决方案2】:

好的,所以标准答案从未对我有用。我在这里使用的是 Titanium 2.1。 {在此处插入对 Ti 开发人员传统的侮辱}

解决方案很简单 - 不要使用此处讨论的大肆吹嘘的“智能钛密度特定解决方案”:

http://docs.appcelerator.com/titanium/2.1/index.html#!/guide/Using_density-specific_resources_on_Android

相反,使用这个简单、朴素的代码来解决您的问题!

var density =  (Titanium.Platform.displayCaps.dpi <= 160) ? 'low' : (Titanium.Platform.displayCaps.dpi > 160 && Titanium.Platform.displayCaps.dpi < 240) ? 'medium' : 'high'; 
var preamble = (Ti.Platform.osname === 'iphone' || (Ti.Platform.osname === 'ipad') )? 'images':'android/images/'+density + '/';

好的,所以第一位设置密度 - 注意我现在还不知道 Ti 的正确密度读数,我只是把它放好,直到我把它们算出来 - 然后如果应用程序是 android 应用程序,则第二位使用它。

然后,我曾经拥有的地方:

var aboutTab = Ti.UI.createTab({
    icon: 'images/about.png',
    title: 'about',
    window: about
});

我现在有:

var aboutTab = Ti.UI.createTab({
    icon: preamble + '/about.png',
    title: 'about',
    window: about
});

就是这样!

最后一句话: 我注意到,根据使用的 Titanium 版本(2.1.3 与 2.1.0)或使用的 android sdk,这可能会表现出不同的非常。我在 2.1.0 和 4.2 android 中获得了最好的结果,其中包括使用“图像”前缀(你知道,指南是如何做到的)。

我注意到的一件事是我不能同时拥有 high/medium/low 文件夹和 hdpi 文件夹,我需要一个或另一个。

我面临的另一个问题是有时代码不会加载 android/images/ 文件夹。完全防弹的方法是使用我描述的代码,但将特定于密度的文件夹直接放在您的图像文件夹下,并通过 images/high/ 等引用它们。图像中的内容总是被复制,并且显示的代码始终有效,无论 Ti 版本如何。

最后请注意,确保您的图像命名区分大小写,因为它可以在 windows 模拟器中工作,但不能在实际(基于 unix 的)设备中工作。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多