下面是具体的操作了:
看源代码得知需要先定义一个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,完事!!!