2010-12-19 22 views
2

私は表示する必要がある非常に大きな画像(地図)を持っています。私はすでに256x256個の "タイル"形式の画像を持っています。 また、いくつかの「ズーム」レベルのタイルを取得しました。アンドロイド携帯電話に大きなタイル画像を表示

現時点では、本当に多くのタイルがある場所で最も深いズームレベルを表示することが問題です。 たとえば、中程度のサイズのマップには、深度レベルのタイルが4行26列含まれています。

2次元スクロールビューとその内部の画像ビューを使用して、1つのタイルにつき1つの問題にアプローチしようとしました。 問題はクラッシュすることです。 4行20列を表示しようとするとクラッシュしませんが、明らかにメモリの問題です。

ここに質問 - どのようにすべてを表示するには、限られた電話RAMを考慮に入れて。 私は、目に見えない画像にメモリを割り当てる方法があるべきであることを理解しており、現在スクロールビューの可視領域にあるもののみを表示しますが、その方法はわかりません。

何か手がかりを聞いて嬉しいですか、これらの事柄に代わるアプローチがあるかもしれません。

ありがとうございました。

答えて

0

は、私はあなたがより良い代わりにスクロールビューの列のグリッドビューを使用するかもしれないと思う(私はそれは同時に側/アップダウンスクロールをサポートしている場合わからない。

そして、あなたのアダプタで、getViewを上書き方法があり、あなたがあなたのイメージの再利用を制御することができ

私も画像やRAMに問題を持ってやっているプロジェクトは、私は基本的にやっていることのようである:。。

image.recycle(); 
System.gc(); 

私は上記のものをやってみましたimと50fpsのように年齢は800x400x32ビットに似ていますが、まだメモリ不足問題​​に遭遇していません。しかし、System.gc()を取り除くとすぐにクラッシュします。

+0

あなたの答えをありがとう。私は垂直/水平スクロール可能なカスタムビューを使用して終了し、onDrawメソッドでキャンバスに直接描画し、近くにタイルのキャッシュされたコピーを保持すると、私が必要とするもののほとんどを行うように見えます。それは良いスタートです。 –

関連する問題