Skip to content

Instantly share code, notes, and snippets.

Embed
What would you like to do?
TitaniumのImageViewでリモートURLの画像を永続的にキャッシュする
$$$ = {};
$$$.ui = {};
$$$.ui.createImageView = function(options){
var ui = Ti.UI.createImageView(options);
// 画像を永続化してキャッシュ
ui.imageWithCache = function(url){
url = url.replace(/\?[0-9]+$/,'');
var cacheFilePath = Titanium.Filesystem.applicationDataDirectory + '/' + hex_sha1(url);
var cacheFile = Ti.Filesystem.getFile(cacheFilePath);
if ( cacheFile.exists()) {
// キャッシュがある場合
Ti.API.info('画像キャッシュファイルあり : ' + cacheFilePath + ' [' + cacheFile.modificationTimestamp() + ']');
ui.image = cacheFilePath;
} else {
// キャッシュがない場合
Ti.API.info('画像キャッシュファイル作成 : ' + cacheFilePath);
ui.addEventListener('load', function(e){
cacheFile = Ti.Filesystem.getFile(cacheFilePath);
if ( !cacheFile.exists()) { // すでに作成されている可能性もあるので
cacheFile.write(ui.toBlob());
}
});
ui.image = url;
}
}
return ui;
};
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.