ImageSeclect和Glide实现从图库选择或者拍照设置头像


</pre><span style="font-size:18px;">               最近业务需求,需要实现一个图片选择器,要用来更改用户的头像,网上的也挺多,但是刚看到一个第三方库ImageSeclect,变来实现一下这个功能,感觉挺好用的,简单方便,可以实现从图库选择或者拍照设置头像,在加载图片的时候本来想用picasso,但是没实现,就用了Glide,感觉也蛮好用的,看效果:</span><p></p><p><span style="font-size:18px;"></span></p><p><span style="font-size:18px;">下面是使用的第三方库     </span></p><pre name="code" class="java"><pre name="code" class="java"> compile 'com.yancy.imageselector:imageselector:1.3.3'
    compile 'com.github.bumptech.glide:glide:3.7.0
 
           实现原理很简单,找到需要更改图片的控件,可以是ImageView或者ImageButton或者其他的,看需求,给其设置一个单击事件既可以进行图片的选择操作,同时可以处理图片,当然多选也是可能的,这部分比肩简单,然后就可以具体的业务代码了。 

            下面是具体的操作了:

            看源代码得知需要先定义一个ImageLoader,先定义,如下

new ImageLoader() {//ImageLoader定义imageseclet的每一项的缩略图的加载 
       @Override 
          public void displayImage(Context context, String path, ImageView imageView) {//此处暂时若使用picasso会出现无缩略图的状况,没解决
             Glide.with(context)
                .load(path) 
                .crop(1, 2, 500, 500)
                .into(imageView);


        看来得现有一个imageLoader,用于在ImageSeclect的图片所有图片展示页面加载每一张图片,代码如下
</pre><span style="font-size:18px;"></span><pre name="code" class="java">ImageConfig imageConfig = new ImageConfig.Builder(imageLoade) //ImageLoader定义imageseclet的每一项的缩略图的加载
                .crop(1, 1, 500, 500)// (截图默认配置:关闭    比例 1:1 长宽比   输出分辨率  500*500)
                .singleSelect()  // 开启单选   (默认为多选)
                .filePath("/ImageSelector/Pictures") // 拍照后存放的图片路径(默认 /temp/picture) (会自动创建)
                .showCamera() // 开启拍照功能 (默认关闭)
                .requestCode(REQUEST_CODE)
                .build();



      此处不想新建一个类,所以使用内部类了。
ImageSelector.open(MainActivity.this, imageConfig);   // 开启图片选择器
      此时已完成对ImageSeclect的初始话,可以使用了,但是生气这时候无法得到处理后图片的路径,看源代码得知
Intent intent = new Intent(fragment.getActivity(), ImageSelectorActivity.class);
     其实ImageSeclect内部是封装好的一个Activity,那么我们就可以通过重写OnActivityResult方法得到intent的数据了,代码如下(
先定义一个常量final int REQUEST_CODE = 1000;表示ImageSeclect的结果码

)

<pre name="code" class="java">@Override
    protected void onActivityResult(int requestCode, int resultCode, Intent data) {//得到选择的裁剪过的图片的路径
        super.onActivityResult(requestCode, resultCode, data);
        if (requestCode == REQUEST_CODE && resultCode == RESULT_OK && data != null) {//此处暂时为有优化
            List<String> pathList = data.getStringArrayListExtra(ImageSelectorActivity.EXTRA_RESULT);
            for (String path : pathList) {
                Glide.with(MainActivity.this).load(path).into(logo);//将图片加载到需要更换的控件上,此时就完成了更换头像等
                System.out.println(path);
            }
        }

 

<pre name="code" class="java">

 
 
 
     好的,到此就算是更换完毕了,如果需要设置为圆形的话,可以重写通过对Glide的Transform属性进行配置,与Picasso类似,上Demo(已实现圆形),记得存储读写和相机权限啊传送门 

OK,完事!!!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值