Android教程-setImageResource和网格视图
我通过以下教程实现了网格视图: 适配器引用了以下图片:Android教程-setImageResource和网格视图,android,gridview,android-gridview,android-gridlayout,Android,Gridview,Android Gridview,Android Gridlayout,我通过以下教程实现了网格视图: 适配器引用了以下图片: // 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.d
// 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]);
我想改进这一点,并且…:
我该怎么做?请为我指出正确的方向,并提供相关的教程(如果可能)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;
}
}
- 从internet下载图片(我将提供URI)
- 缓存图像
- 在GridView中显示它们
如果您有其他与此主题相关的问题或不清楚的问题,请提问,我将尝试帮助您编写自己的逻辑,通过网络获取数据或使用库universal image loader或Volley。我更愿意自己编写获取程序。你知道这方面有什么好的教程吗?
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;
}