我按照本教程实现了一个网格视图:
http://developer.android.com/guide/topics/ui/layout/gridview.html
适配器引用了以下图片:
// references to our images
private Integer[] mThumbIds = {
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7,
R.drawable.sample_0, R.drawable.sample_1,
R.drawable.sample_2, R.drawable.sample_3,
R.drawable.sample_4, R.drawable.sample_5,
R.drawable.sample_6, R.drawable.sample_7
};
然后使用 setImageResource :
显示图片imageView.setImageResource(mThumbIds[position]);
我想改善这一点......:
我该怎么做?请指出正确的方向,并尽可能提供相关的教程
答案 0 :(得分:1)
本教程可以帮助您https://stackoverflow.com/questions/15549421/how-to-download-and-save-an-image-in-android
如果您希望在一个应用程序生命周期中拥有缓存,或者创建SQLite数据库以获得可以永久存储数据的缓存,则可以在您的类中使用HashMap https://developer.android.com/reference/android/database/sqlite/SQLiteDatabase.html
您需要扩展BaseAdapter类。本教程可以帮助您:http://www.stealthcopter.com/blog/2010/09/android-creating-a-custom-adapter-for-gridview-buttonadapter/
如果您有其他与此主题相关的问题,或者有些问题不明确,请问我,我会尽力帮助您
答案 1 :(得分:0)
AsyncTask在ImageView上加载图片:
private class DownloadImageTask extends AsyncTask<String, Void, Bitmap> {
private ImageView bmImage;
public DownloadImageTask(ImageView bmImage) {
this.bmImage = bmImage;
}
protected Bitmap doInBackground(String... urls) {
final File cacheDir = getCacheDir();
Bitmap bitmap = null;
if (Utill.isMemoryAvaliable(dir.getPath())){
String url = urls[0];
String filename = url.substring(url.lastIndexOf("/")+1,url.contains("?")?url.indexOf("?"):url.length());
File f = new File(cacheDir, filename);
//from SD cache
if(!f.exists()){
try {
Utill.DownloadFromUrl(url, filename, cacheDir);
} catch (IOException ex) {
Log.e("Error", "Download", ex);
}
}
if(f.exists())
bitmap = decodeFile(new File(cacheDir, filename));
}
return bitmap;
}
protected void onPostExecute(Bitmap result) {
bmImage.setImageBitmap(result);
}
private Bitmap decodeFile(File f) {
try {
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream(new FileInputStream(f), null, o);
return BitmapFactory.decodeStream(new FileInputStream(f));
} catch (FileNotFoundException e) {
Log.e("Error", "Decode File", e);
}
return null;
}
}
下载图片:
public static boolean downloadFromUrl(String downloadUrl, String fileName, File dir) throws IOException {
if (URLUtil.isValidUrl(downloadUrl)) {
System.setProperty("http.keepAlive", "false");
URL url = new URL(downloadUrl);
HttpURLConnection ucon = (HttpURLConnection) url.openConnection();
ucon.setRequestProperty("Connection", "Keep-Alive");
ucon.setConnectTimeout(50000);
ucon.connect();
if (ucon.getResponseCode() == HttpURLConnection.HTTP_OK) {
InputStream is = url.openStream();
if (is.available() > 0) {
BufferedInputStream bis = new BufferedInputStream(is);
ByteArrayBuffer baf = new ByteArrayBuffer(5000);
int current = 0;
while ((current = bis.read()) != -1) {
baf.append((byte) current);
}
File file = new File(dir, fileName);
FileOutputStream fos = new FileOutputStream(file);
fos.write(baf.toByteArray());
fos.flush();
fos.close();
}
is.close();
return true;
} else {
return false;
}
}
return false;
}