StaggeredGridView-向上滚动不平滑(介于两者之间)

时间:2015-06-17 12:43:26

标签: android scroll staggered-gridview

我正在显示设备存储中的所有图像 问题是当我向上滚动时它不平滑(滞后) 我正在使用etsy/AndroidStaggeredGrid并使用以下代码:

public class GalleryFragment extends Fragment {
    StaggeredGridView gridview;
    ArrayList<Gallery> galleries;
    CameraGalleryAdapter gallerylist;
    String[] arrPath;
    String[] videoPath;
    int count,count2,count3,count4;
      ProgressBar progressBar;
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

    final View rootView = inflater.inflate(R.layout.fragment_gallery, container, false);
        galleries=new ArrayList<Gallery>();
                ((ActionBarActivity) getActivity()).getSupportActionBar().show();
        gridview = (StaggeredGridView)rootView.findViewById(R.id.gridcamera);
        progressBar=(ProgressBar)rootView.findViewById(R.id.progressBar);
            gallerylist=new CameraGalleryAdapter(getActivity().getApplicationContext(),R.layout.gallery_grid,galleries);
        gridview.setAdapter(gallerylist);


        gridview.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) {

                Fragment currentFragment = new PreviewFragment();
                Bundle args = new Bundle();

                //    CameraActivity.isGalleryFrgament=false;

                if (galleries.get(i).getIsImage()) {
                    args.putString("imagepath", galleries.get(i).getImageUrl());
                    args.putString("isVideo", "gallery");
                } else {
                    args.putString("isVideo", "videogallery");
                    args.putString("fileUri", galleries.get(i).getVideoUrl());
                }

                currentFragment.setArguments(args);
                FragmentManager frgManager;
                frgManager = getActivity().getSupportFragmentManager();
                frgManager.beginTransaction().replace(R.id.camera_container, currentFragment).addToBackStack("tag").commit();
            }
        });

getImages();


        return rootView;
    }

private void getImages()
{
    ((CameraActivity)getActivity()).setOnBackPressedListener(new BaseBackPressedListener(getActivity(),true));

    final String[] columns = { MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID,MediaStore.Video.Media.DATA,
    };
    final String orderBy = MediaStore.Images.Media._ID;
    Cursor cursor = getActivity().getContentResolver().query(
            MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, null,
            null, orderBy);

    count = cursor.getCount();
    Cursor cursor2 = getActivity().getContentResolver().query(
            MediaStore.Images.Media.INTERNAL_CONTENT_URI, columns, null,
            null, orderBy);
    count2 = cursor2.getCount();

    Cursor cursor3 = getActivity().getContentResolver().query(
            MediaStore.Video.Media.EXTERNAL_CONTENT_URI, columns, null,
            null, orderBy);
   count3 = cursor3.getCount();
    Cursor cursor4 = getActivity().getContentResolver().query(
            MediaStore.Video.Media.INTERNAL_CONTENT_URI, columns, null,
            null, orderBy);
    count4 = cursor4.getCount();
    arrPath = new String[count+count2+ count3+count4];
    videoPath= new String[count+count2+ count3+count4];

    for (int i = 0; i < count; i++)
    {
        cursor.moveToPosition(i);
        int dataColumnIndex = cursor.getColumnIndex(MediaStore.Images.Media.DATA);

        Gallery ga=new Gallery();
        ga.setImageUrl(cursor.getString(dataColumnIndex));
        ga.setIsImage(true);
        galleries.add(ga);
    }
    for (int i = 0; i < count2; i++)
    {
        cursor2.moveToPosition(i);
        int dataColumnIndex = cursor2.getColumnIndex(MediaStore.Images.Media.DATA);
        Gallery ga=new Gallery();;
        ga.setImageUrl(cursor2.getString(dataColumnIndex));
        ga.setIsImage(true);
        galleries.add(ga);

    }

    for (int i = 0; i < count3; i++)
    {


        cursor3.moveToPosition(i);

        int dataColumnIndex = cursor3.getColumnIndex(MediaStore.Video.Media.DATA);

        Bitmap thumb = ThumbnailUtils.createVideoThumbnail(cursor3.getString(dataColumnIndex),
                MediaStore.Images.Thumbnails.MINI_KIND);

        Gallery ga=new Gallery();

        ga.setVideoThumbnail(thumb);

        ga.setVideoUrl(cursor3.getString(dataColumnIndex));

        ga.setIsImage(false);
        galleries.add(ga);


    }
    for (int i = 0; i < count4; i++)
    {


        cursor4.moveToPosition(i);

        int dataColumnIndex = cursor4.getColumnIndex(MediaStore.Video.Media.DATA);

        Bitmap thumb = ThumbnailUtils.createVideoThumbnail(cursor4.getString(dataColumnIndex),MediaStore.Images.Thumbnails.MINI_KIND);

        Gallery ga = new Gallery();

        ga.setVideoThumbnail(thumb);

        ga.setVideoUrl(cursor4.getString(dataColumnIndex));

        ga.setIsImage(false);
        galleries.add(ga);


    }
}
}

如何提高滚动速度并使其平滑?

0 个答案:

没有答案