URLから画像をギャラリービューに読み込みたいですか?androidビットマップキャッシング
私はまずこれを使ってビットマップにします。
URL aURL = new URL(myRemoteImages[position]);
URLConnection conn = aURL.openConnection();
conn.setUseCaches(true);
conn.connect();
Object response = conn.getContent();
if (response instanceof Bitmap) {
Bitmap bm = (Bitmap)response;
InputStream is = conn.getInputStream();
/* Buffered is always good for a performance plus. */
BufferedInputStream bis = new BufferedInputStream(is);
/* Decode url-data to a bitmap. */
bm = BitmapFactory.decodeStream(bis);
bis.close();
is.close();
Log.v(imageUrl, "Retrieving image");
/* Apply the Bitmap to the ImageView that will be returned. */
i.setImageBitmap(bm);
このビットマップをキャッシュする方法を教えてください。ユーザーが画面をスワイプすると、何度も何度も再ロードされません。
EDIT:getImage()を呼び出して、各URLのテキストURLを取得します。
私はこれらを両方ともasyncTaskで使用します。 preExecute私はgetImage()を呼び出す とdoInBackground私はimageAdapterにギャラリーを設定します。
private class MyTask extends AsyncTask<Void, Void, Void>{
@Override
protected Void doInBackground(Void... arg0) {try {
getImages();
Log.v("MyTask", "Image 1 retreived");
getImage2();
Log.v("MyTask", "Image 2 retreived");
getImage3();
Log.v("MyTask", "Image 3 retreived");
getImage4();
Log.v("MyTask", "Image 4 retreived");
} catch (IOException e) {
Log.e("MainMenu retreive image", "Image Retreival failed");
e.printStackTrace();
}
return null;
}
@Override
protected void onPostExecute(Void notUsed){
((Gallery) findViewById(R.id.gallery))
.setAdapter(new ImageAdapter(MainMenu.this));
}
}
EDIT:あなたがSDカードに、アプリケーションの起動時にあなたのイメージを保存することができ
public View getView(int position, View convertView, ViewGroup parent) {
ImageView i = new ImageView(this.myContext);
try {
URL aURL = new URL(myRemoteImages[position]);
URLConnection conn = aURL.openConnection();
conn.setUseCaches(true);
conn.connect();
Object response = conn.getContent();
if (response instanceof Bitmap) {
Bitmap bm = (Bitmap)response;
HmmmmイメージURLがimageUrl、imageUrl2などのように設定されていて、イメージを取り戻しています。これはイメージが毎月変更されるためです。 SDカードに保存するのは賢明な方法ではありません。たぶん、何をしようとしているのはまだアンドロイドでは不可能です。私はギャラリービューで自分のURLから画像を表示しようとしているので、ユーザーはそれらを見ることができます。 –
Hm ...あなたの問題は、getView()メソッドでこのコードを実行し、getView()が呼び出されるたびにイメージがダウンロードされることだと思います。 –
上記の私の編集を見てください。 getView()はどこでcalleDですか? –