Android在相册中过滤GIF图片

参考资料:http://blog.csdn.net/xiaanming/article/details/18730223

过滤GIF的2种方法:

1、

 /** 
     * 利用ContentProvider扫描手机中的图片,此方法在运行在子线程中 
     */  
    private void getImages() {  
        //显示进度条  
        mProgressDialog = ProgressDialog.show(this, null, "正在加载...");  

        new Thread(new Runnable() {  

            @Override  
            public void run() {  
                Uri mImageUri = MediaStore.Images.Media.EXTERNAL_CONTENT_URI;  
                ContentResolver mContentResolver = MainActivity.this.getContentResolver();  

                //只查询jpeg和png的图片  
                Cursor mCursor = mContentResolver.query(mImageUri, null,  
                        MediaStore.Images.Media.MIME_TYPE + "=? or "  
                                + MediaStore.Images.Media.MIME_TYPE + "=?",  
                        new String[] { "image/jpeg", "image/png" }, MediaStore.Images.Media.DATE_MODIFIED);  

                if(mCursor == null){  
                    return;  
                }  

                while (mCursor.moveToNext()) {  
                    //获取图片的路径  
                    String path = mCursor.getString(mCursor  
                            .getColumnIndex(MediaStore.Images.Media.DATA));  

                    //获取该图片的父路径名  
                    String parentName = new File(path).getParentFile().getName();  


                    //根据父路径名将图片放入到mGruopMap中  
                    if (!mGruopMap.containsKey(parentName)) {  
                        List<String> chileList = new ArrayList<String>();  
                        chileList.add(path);  
                        mGruopMap.put(parentName, chileList);  
                    } else {  
                        mGruopMap.get(parentName).add(path);  
                    }  
                }  

                //通知Handler扫描图片完成  
                mHandler.sendEmptyMessage(SCAN_OK);  
                mCursor.close();  
            }  
        }).start();  

    }  

2、

private void initPhoneImages(String bucketName) {
        try {
            final String orderBy = MediaStore.Images.Media.DATE_TAKEN;
            String searchParams = null;
            String bucket = bucketName;
            searchParams = "bucket_display_name = \"" + bucket + "\"" + " and (" + MediaStore.Images.Media.MIME_TYPE + "=? or " + MediaStore.Images.Media.MIME_TYPE + "=?)";
            String[] selectionArgs = new String[] { "image/jpeg", "image/png" };

            final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID};
            mImageCursor = getActivity().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, searchParams, selectionArgs, orderBy + " DESC");

            setAdapter(mImageCursor);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

如果需要显示GIF有2种方法:
1、查询条件中添加:

new String[] { "image/png","image/jpeg","image/gif"}

2、使用下面查询语句

private void initPhoneImages(String bucketName) {
        try {
            final String orderBy = MediaStore.Images.Media.DATE_TAKEN;
            String searchParams = null;
            String bucket = bucketName;
            searchParams = "bucket_display_name = \"" + bucket + "\"";

            final String[] columns = {MediaStore.Images.Media.DATA, MediaStore.Images.Media._ID};
            mImageCursor = getActivity().getContentResolver().query(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, columns, searchParams, null, orderBy + " DESC");

            setAdapter(mImageCursor);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值