PicSelectAndShow完善之选择本地视频

     上一篇文章有说到要在PicSelectAndShow框架中增加选择本地视频的操作,因为最近翻博客看到了LoaderManager的文章,想到了PicSelectAndShow使用的正是这个,所以就抽时间完善了下框架微笑。先来个效果图:

      使用步骤参考PicSelectAndShow图片选择框架

      调用选择视频的代码也是一行代码搞定如下:


case R.id.bt_select_video:
    MultiImageSelector.create().selectVideo(true).start(MainActivity.this,REQUEST_PHOTO_IMAGE);
    break;

       上篇文章好像忘记贴出选择完代码怎么接收结果的示例委屈,这篇补上,不过在GitHub上面有整个完整的项目:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    if(requestCode == REQUEST_PHOTO_IMAGE){
        if(resultCode == RESULT_OK){
        //这个是选择完图片和视频后处理的方法
       ArrayList<String> paths=new ArrayList<>();
            paths = data.getStringArrayListExtra(MultiImageSelector.EXTRA_RESULT);
            lstPhotoPath.addAll(paths);
            adapter=new GridViewAdapter(MainActivity.this,lstPhotoPath,5);
            grid_show.setAdapter(adapter);
        }
    }else if(requestCode==REQUEST_CODE_IMAGE_PATH){
        if(resultCode==RESULT_OK){
               //这个是上篇文章更新的仿文件管理器选择地址的回调
           image_path=data.getStringExtra(INTENT_EXTRA_IMGPATH);
            String fileName = System.currentTimeMillis() + ".jpg";
            File appDir=new File(image_path);
            File file1 = new File(appDir, fileName);
            MultiImageSelector.create().takePhoto(true).registerFile(file1).start(MainActivity.this,REQUEST_PHOTO_IMAGE);
        }
    }
}

       好了,具体的使用代码已经贴出来了,接下来和大家分享一下具体的实现思路和代码,首先要说的就是MultiImageSelector这个类,他的作用主要就是对一些具体的操作做了封装处理,像刚进去的单选,单选不拍照,多选,多选不拍照等,都是一个个的操作,代码调用的时候只要先获取到MultiImageSelector的实例,然后调用里面不同的设置方法就可以实现不同的效果,因为具体的逻辑处理都已经在MultiImageSelector类里面做了处理,包括区分单多选,是否拍照,以及选择完成后的回调等。

        接下来就是具体的选择图片和视频的操作了,这部分的处理主要是在MultiImageSelectorFragment中,涉及到的知识点就是文章开始我提到的LoaderManager和CursorLoader,因为这个知识点有点久远并且对他介绍的文章也已经多到数不胜数的地步,我就不在这用我那小学语文的水平解释了,大家想对这块知识点有更多的了解,请移步到大牛的博客,他有对这一系列的来龙去脉以及如何使用做了一个系列的分享。

        在做选择本地视频的时候有一个问题就是获取视频的缩略图展示,刚开始确实想过直接获取视频的缩略图用来展示这种方法,具体的操作在代码中可以看到,不过一个问题是获取到缩略图后视频怎么获取,以及他们怎么做到一一对应的关系,好在网上已经有了现成的解决方案,具体实现请参考又一位大牛替我们做好了,有木有发现特简单。两种方案实现一种是取到视频,再获取第一帧图片,另一种是直接获取缩略图通过id绑定,因为我原先的逻辑比较简单,为了看起来统一,容易理解,果断放弃了大牛的方案,选择了一种更为简单的操作偷笑,相信如果有看我代码的朋友已经知道了我的实现方法,那就是强大的Glide库,Glide可以自动读取到视频连接的第一帧图片,是不是瞬间省掉了好多逻辑处理,对于Glide的介绍,去年郭霖大神出过一个系列的文章专门从源码的角度去分析Glide的实现过程:郭霖的专栏

          好了,最后有什么没明白的地方,或者使用过程中有什么bug欢迎各位提出来,咱们一起提高微笑,有木有发现我说的分享思路和代码基本就是把大家带到各位大牛的博客,因为站在巨人的肩上,我们可以发现更多我们平常忽略的东西以及我们没有接触过的东西,呵呵,还有一个原因是我的语文表达没人家好偷笑

         最后再次感谢大家的浏览,感谢各位大牛的贡献和分享,灰常感谢!

         再来一波广告:https://github.com/BoBoAndroid/PicSelectAndShow 最新最完整的项目都在这儿了。

        

        


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章