钛 - 密度特定资源的android选项卡图标不起作用

时间:2012-09-07 02:31:24

标签: android titanium

遵循这里的概念:

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

然后图标将出现......但不会出现。有没有......我有什么想念的吗?

2 个答案:

答案 0 :(得分:1)

enter image description here Plz以冷静的心态阅读并理解这与我合作“更多控制”段落。

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

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

答案 1 :(得分:1)

好的,所以标准答案永远不会为我工作。我在这里使用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 vs 2.1.0)或使用的android sdk,这可能会非常。我在2.1.0和4.2安卓上取得了最好的成绩,其中包括使用&#39;图像&#39;前缀(你知道,指南如何说)。

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

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

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