4

したがって、ここでの概念に従います。

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

その後、アイコンが表示されます...ただし、それ以外の場合は表示されません。ありますか...これに欠けているものはありますか?

4

2 に答える 2

1

さて、標準的な答えが私のために働くことは決してありませんでした。ここではチタン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の適切な密度の読み取り値を知りません、私はそれらを解決するまでこれを上げています-そして2番目のビットはアプリがAndroidの場合それを使用します1。

次に、私が以前持っていた場所:

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
});

そしてそれはそれです!

最終的な言葉:使用するチタンのバージョン(2.1.3と2.1.0)または使用するAndroid SDKによって、これが非常に異なる動作をする可能性があることに気づきました。私は2.1.0と4.2androidで最高の結果を出しました、そしてそれは'images'プレフィックスの使用を含みます(あなたが知っている、ガイドがそれをするように言う方法)。

私が気づいたことの1つは、高/中/低フォルダーとhdpiフォルダーの両方を持つことができないということでした。どちらか一方が必要です。

私が直面したもう1つの問題は、コードがandroid /images/フォルダーをロードしない場合があることでした。これを行うための完全に防弾の方法は、私が説明したコードを使用することですが、密度固有のフォルダーを画像フォルダーのすぐ下に置き、images /high/などを介してそれらを参照します。画像のコンテンツは常にコピーされます、および示されているコードは、Tiのバージョンに関係なく常に機能します。

最後に、画像は大文字と小文字を区別して名前が付けられていることを確認してください。これは、Windowsエミュレーターでは機能しますが、実際の(UNIXベースの)デバイスでは機能しないためです。

于 2012-09-24T02:41:45.413 に答える
1

ここに画像の説明を入力冷静に読んで理解してください、これは私と一緒に働いている「より多くの制御」の段落です。

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

デバイスまたはエミュレータから古いアプリケーションを削除してください。このクリーンの後、ビルドすると、これは適切に機能すると思います。

于 2012-09-07T09:39:15.637 に答える