몇 가지 URL 이미지를 내 안드로이드 그리드보기에 표시하기 위해 다음과 같은 코드가 있습니다. 문제는 그리드보기에 몇 개의 이미지 만 표시하는 데 많은 시간이 걸린다는 것입니다. 다음은 내 코드입니다 :이미지 URL을 android grid view로 빠르게로드하는 방법은 무엇입니까?
public class GridViewImageAdapter extends BaseAdapter {
private Activity activity;
private ArrayList<HashMap<String, String>> galleryAttributes = new ArrayList<HashMap<String, String>>();
private int imageWidth;
int ctr = 0;
public GridViewImageAdapter(Activity activity,
ArrayList<HashMap<String, String>> galleryAttributes, int imageWidth) {
this.activity = activity;
this.galleryAttributes = galleryAttributes;
this.imageWidth = imageWidth;
}
@Override
public int getCount() {
// TODO Auto-generated method stub
return galleryAttributes.size();
}
@Override
public Object getItem(int position) {
// TODO Auto-generated method stub
return galleryAttributes.get(position);
}
@Override
public long getItemId(int position) {
// TODO Auto-generated method stub
return position;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
// TODO Auto-generated method stub
ImageView imageView;
if(convertView == null){
imageView = new ImageView(activity);
}else{
imageView = (ImageView) convertView;
}
LoadImage loadImage = new LoadImage();
try {
Bitmap image = loadImage.execute(galleryAttributes.get(position).get("Link")).get();
imageView.setScaleType(ImageView.ScaleType.CENTER_CROP);
imageView.setLayoutParams(new GridView.LayoutParams(imageWidth, imageWidth));
imageView.setImageBitmap(image);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ExecutionException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return imageView;
}
public class LoadImage extends AsyncTask<String, String, Bitmap>{
@Override
protected Bitmap doInBackground(String... params) {
// TODO Auto-generated method stub
try{
BitmapFactory.Options o = new BitmapFactory.Options();
o.inJustDecodeBounds = true;
BitmapFactory.decodeStream((InputStream) new URL(params[0]).getContent(), null, o);
final int REQUIRED_WIDTH = imageWidth;
final int REQUIRED_HEIGHT = imageWidth;
int scale = 1;
while (o.outWidth/scale/2 >= REQUIRED_WIDTH
&& o.outHeight/scale/2 >= REQUIRED_HEIGHT)
scale *= 2;
BitmapFactory.Options o2 = new BitmapFactory.Options();
o2.inSampleSize = scale;
return BitmapFactory.decodeStream((InputStream) new URL(params[0]).getContent(), null, o2);
}
catch(Exception e){
e.printStackTrace();
}
return null;
}
}
https://github.com/nostra13/Android-Universal-Image-Loader 그리드 목록의 URL에서 이미지를 빠르게로드하고 원하는 다른 파일을 찾으려면 –
을 사용하십시오. URL 이미지를 표시하기 위해 지연로드를 사용해야합니다. 귀하의 gridview –
프레임 워크를 사용하지 않고 어떻게이 작업을 수행 할 수 있습니까? 누군가 이미지 코딩이 느려지지 않도록 코드를 구현하는 방법을 알려줄 수 있습니다. –