Titaniumでhiresなリモート画像をキャッシュするWidget作った
経緯
そもそもImageViewはリモート画像を自動でキャッシュしてくれるのだけど
hiresプロパティを設定した途端、うまくキャッシュ出来なくなってしまう
対策
一応キャッシュファイル自体は@2xな名前で作成してくれてる様なので
キャッシュファイルが存在する場合はそれを読み込む様にした
ついでに
プロフィール画像みたいな、普段はキャッシュしておきたいけど変更する時もある場合用に
キャッシュをクリアしたり、明示的にキャッシュするメソッドも追加した
github
そんなわけで
プロジェクト名はこんなんでいいのか
coffeeScriptのままでいいのか分からぬままgithubにあげてみた
https://github.com/ma2kubo/ma2.cachedImageView
iosでしか試してないのでiosのみの設定にしてあるけど androidでも使えるかも?(てきとー)
使い方
<Widget id="imageView" src="ma2.cachedImageView"></Widget>
$.imageView.image = "http://hoge.com/hoge.png"
中身
こんな感じでapplyPropertiesしてるのでtssも反映されるはず
args = arguments[0] or {} delete args.id delete args.__parentSymbol $.imageView.applyProperties args
同じくこんな感じにしたのでイベントも反映されるはず
exports.on = $.imageView.addEventListener exports.off = $.imageView.removeEventListener
ちなみにキャッシュの場所メモ
Ti.Filesystem.applicationDataDirectory + "../Library/Caches/"