прокрутка галереи не плавная и довольно шаткая при прокрутке в планшете - PullRequest
0 голосов
/ 15 февраля 2012

Я загружаю изображения в представление галереи, и при прокрутке они кажутся шаткими или застрявшими. Я хочу иметь галерею с плавной прокруткой. Это происходит только тогда, когда я прокручиваю планшет Samsung Galaxy 10.1. Пожалуйста, помогите мне решить эту проблему.

Я использую код ниже

   @Override
    public View getView(int position, View convertView, ViewGroup parent) {
        final int pos = position;
        View retval = LayoutInflater.from(parent.getContext()).inflate(
                R.layout.horrizontallistitem, null);
        final ImageView imgitem = (ImageView) retval
                .findViewById(R.id.hlvItem);
        try {
            imgitem.setImageBitmap(CommonKeys
                    .getBitmapFromAsset("_images/" + dataObjects[pos]
                            + ".png"));
        } catch (IOException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();

        }
        return retval;
    }

Ответы [ 2 ]

0 голосов
/ 15 февраля 2012
Create Image View at run time and add to Gallery.Your Activity Should implements 
ViewFactory     

private class ImageAdapter extends BaseAdapter{
    Context mContext;
    private int itemBackground;

    //private LayoutInflater layoutInflater;
    public ImageAdapter(Context c){
        mContext = c;
        //tempBitmap.clear();
        //tempBitmap=hashMap.get("page"+pageCount);
        tempbitmap=new ArrayList<Bitmap>();
        tempbitmap.clear();
        int end=pageCount*5;
        int start=end-5;
        tempbitmap=bitmapArray.subList(start, end);
        TypedArray attr = obtainStyledAttributes(R.styleable.HelloGallery);
        itemBackground = attr.getResourceId(
                R.styleable.HelloGallery_android_galleryItemBackground, 0);
        attr.recycle();       
        //layoutInflater = LayoutInflater.from(c);
    }

        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            return tempbitmap.size();
        }

        @Override
        public View getView(int position, View convertView, ViewGroup arg2) {
            // TODO Auto-generated method stub

            ImageView imageView;
            if (convertView == null) {  // if it's not recycled, initialize some attributes
                imageView = new ImageView(mContext);
                imageView.setLayoutParams(new Gallery.LayoutParams(170,grid_main.getHeight()));
              imageView.setScaleType(ImageView.ScaleType.FIT_XY);
                imageView.setBackgroundResource(itemBackground);

                //imageView.setPadding(8,8,8,8);
            } else {
                imageView = (ImageView) convertView;
            }
            imageView.setImageBitmap(tempbitmap.get(position));
            return imageView;
        }

        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            return null;
        }

        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return 0;

        }

        }


    @Override
    public View makeView() {
        // TODO Auto-generated method stub
        ImageView imageView = new ImageView(this);
        imageView.setScaleType(ImageView.ScaleType.FIT_CENTER);
        imageView.setLayoutParams(new 
                ImageSwitcher.LayoutParams(
                        LayoutParams.FILL_PARENT,
                        LayoutParams.FILL_PARENT));
        imageView.setBackgroundColor(0xFF000000);
        return imageView;
    }
0 голосов
/ 15 февраля 2012

открытый класс LazyAdapter расширяет BaseAdapter {

private Activity activity;
private String[] data;
private static LayoutInflater inflater=null;
public ImageLoader imageLoader;

public LazyAdapter(Activity a, String[] d) {
    activity = a;
    data=d;
    inflater = (LayoutInflater)activity.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
    imageLoader=new ImageLoader(activity.getApplicationContext());
}

public int getCount() {
    return data.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 int pos = position;
    final ImageView imgitem=null; 
    View retval = convertView;
    if(retval==null)
    { 
           retval = LayoutInflater.from(parent.getContext()).inflate(
                        R.layout.horrizontallistitem, null);
           imgitem = (ImageView) retval
                      .findViewById(R.id.hlvItem);
    }
   imageLoader.DisplayImage(dataObjects[position], imgitem);
   return retVal;
}

, см. Реализацию отложенного адаптера по следующей ссылке:

https://github.com/thest1/LazyList/tree/master/src/com/fedorvlasov/lazylist

В этом FileCache код UrlConnection бесполезенвам, но оставшийся код может достичь вашей цели

...