Hiện kết quả từ 1 tới 3 của 3
Like Tree1Likes
  • 1 Post By WTF

Chủ đề: Gallery scroll rất chậm và giật lag khi trượt


  1. #1
    Thành Viên Mới Avatar của nbkienvt
    Tham gia
    Sep 2015
    Bài gửi
    3

    Gallery scroll rất chậm và giật lag khi trượt

    Chào các bác, e mới tập tành làm cái app android về Gallery lấy hình từ thư mục trong máy. hình dạng .png. e load bitmap lên gallery được rồi nhưng vấn đề là khi trượt thì gallery scroll rất chậm ai có kinh nghiệm xin chỉ e c với ạ. cám ơn các bác. code:public class ImageAdapter extends BaseAdapter {
    private Context context;
    private int itemBackground;

    public ImageAdapter(Context c)
    {
    context = c;

    // sets a grey background; wraps around the images
    TypedArray a =obtainStyledAttributes(R.styleable.MyGallery);
    itemBackground = a.getResourceId(R.styleable.MyGallery_android_galleryItemBackground, 0);
    a.recycle();
    }
    // returns the number of images
    public int getCount() {
    return IndexImage.length;
    }
    // returns the ID of an item
    public Object getItem(int position) {
    return position;
    }
    // returns the ID of an item
    public long getItemId(int position) {
    return position;
    }
    // returns an ImageView view
    public View getView(int position, View convertView, ViewGroup parent) {
    ImageView imageView = new ImageView(context);
    bm1=decodeAndResizeFile(filePaths.get(position));
    Bitmap bm2= ThumbnailUtils.extractThumbnail(bm1,300,200);
    imageView.setImageBitmap(bm2);
    ((BitmapDrawable)imageView.getDrawable()).setAntiA lias(true);
    imageView.setLayoutParams(new Gallery.LayoutParams(300, 200));
    imageView.setBackgroundResource(itemBackground);
    imageView.setScaleType(ImageView.ScaleType.FIT_XY);
    return imageView;
    }
    }public static Bitmap decodeAndResizeFile(String imagefilepath) {
    try {
    // Decode image size
    File f=new File(imagefilepath);
    BitmapFactory.Options o = new BitmapFactory.Options();
    o.inJustDecodeBounds = true;
    BitmapFactory.decodeStream(new FileInputStream(f), null, o);

    // The new size we want to scale to
    final int REQUIRED_SIZE = 70;

    // Find the correct scale value. It should be the power of 2.
    int width_tmp = o.outWidth, height_tmp = o.outHeight;
    int scale = 1;
    while (true) {
    if (width_tmp / 2 < REQUIRED_SIZE || height_tmp / 2 < REQUIRED_SIZE)
    break;
    width_tmp /= 2;
    height_tmp /= 2;
    scale *= 2;
    }

    // Decode with inSampleSize
    BitmapFactory.Options o2 = new BitmapFactory.Options();
    o2.inSampleSize = scale;
    return BitmapFactory.decodeStream(new FileInputStream(f), null, o2);
    } catch (FileNotFoundException e) {
    }
    return null;
    }

    Chủ đề tương tự:


  2. #2
    WTF
    WTF đang ẩn
    Thành Viên Trụ Cột Avatar của WTF
    Tham gia
    Dec 2013
    Bài gửi
    710
    Chậm là do bitmap nặng quá đó bạn, bạn scale bitmap thumbnai nhỏ lại hoặc là dùng thread để load nó.


    nbkienvt likes this.

  3. #3
    Thành Viên Mới Avatar của nbkienvt
    Tham gia
    Sep 2015
    Bài gửi
    3
    Quote Nguyên văn bởi WTF Xem bài viết
    Chậm là do bitmap nặng quá đó bạn, bạn scale bitmap thumbnai nhỏ lại hoặc là dùng thread để load nó.
    cám ơn bác @WTF. bác có thể cho e ví dụ dùng thread load image ko ạ? e tks bác truớc



Đánh dấu

Quyền viết bài

  • Bạn không thể gửi chủ đề mới
  • Bạn không thể gửi trả lời
  • Bạn không thể gửi file đính kèm
  • Bạn không thể sửa bài viết của mình
  •