assests 폴더에서로드 된 이미지를 표시하는 gridView를 사용하고 있습니다.gridview의 스크롤 성능 향상
gridview는 자산에서 50 개 이상의 이미지를 표시하지만 해당 gridview의 성능은 매우 좋지 않으며 스크롤 시간이 지연됩니다.
샘플 코드는 다음과 같습니다
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.ameme);
GridView myGallery = (GridView) findViewById(R.id.gridView1);
mBitArray = new Bitmap[5];
//This is just a sample code
try
{
//these images are stored in the root of "assets"
mBitArray[0] = getBitmapFromAsset("AM0.jpg");
mBitArray[1] = getBitmapFromAsset("AM1.jpg");
mBitArray[2] = getBitmapFromAsset("AM2.jpg");
mBitArray[3] = getBitmapFromAsset("AM3.jpg");
mBitArray[4] = getBitmapFromAsset("AM4.jpg");
}
catch (IOException e)
{
e.printStackTrace();
}
myGallery.setAdapter(new GalleryAdapter(this, mBitArray));
}
public class GalleryAdapter extends BaseAdapter
{
private Context mContext;
private Bitmap[] mImageArray;
public GalleryAdapter(Context context, Bitmap[] imgArray)
{
mContext = context;
mImageArray = imgArray;
}
public int getCount()
{
return mImageArray.length;
}
public Object getItem(int position)
{
return position;
}
public long getItemId(int position)
{
return position;
}
public View getView(int position, View convertView, ViewGroup parent)
{
final ImageView imgView = new ImageView(mContext);
imgView.setImageBitmap(mImageArray[position]);
final RelativeLayout borderImg = new RelativeLayout(mContext);
borderImg.setPadding(8, 8, 8, 8);
borderImg.setGravity(Gravity.CENTER | Gravity.BOTTOM);
borderImg.setBackgroundColor(Color.rgb(7,35,63));
borderImg.addView(imgView);
imgView.setLayoutParams(new RelativeLayout.LayoutParams(100,100));
return borderImg;
}
}
private Bitmap getBitmapFromAsset(String strName) throws IOException
{
AssetManager assetManager = getAssets();
InputStream istr = assetManager.open(strName);
Bitmap bitmap = BitmapFactory.decodeStream(istr);
istr.close();
return bitmap;
}
}
가 어떻게이 gridView()
의 스크롤이 부드럽게해야합니까?
'getView()'에서'convertView'를 무시하지 않고 셀을 재활용하는 것으로 시작하십시오. 그 외에도 Traceview를 사용하여 문제가있는 곳을 확인하십시오. – CommonsWare
초보자입니다. 어떻게해야합니까? –