Android 强大的UCrop框架实现头像裁剪功能
2018-01-05 21:52
246 查看
GitHub:https://github.com/Yalantis/uCrop
第一步:在gradle/app 导入依赖库(最新版本见上):
compile ‘com.yalantis:ucrop:1.4.1’
第二步:在AndroidManifest.xml进行注册
<activity //screenOrientation:设定该活动的方向(portrait:纵向,landscape:横向,unspecified:由系統選擇顯示方向,还有user,behind,sensor,nosensor) android:name="com.yalantis.ucrop.UCropActivity" android:screenOrientation="portrait" android:theme="@style/Theme.AppCompat.Light.NoActionBar"/>
MainActivity实现裁剪功能代码(调用手机照相机和相册详见:http://blog.csdn.net/qq_37238649/article/details/78969720)
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode){ //照相 case TAKE_PHOTO: if (resultCode == RESULT_OK ){ startCrop(imageUri);//照相完毕裁剪处理 } break; //相册 case CHOOSE_PHOTO: if(resultCode == RESULT_OK){ //判断手机系统版本号 startCrop(data.getData()); /*if(Build.VERSION.SDK_INT >= 19){ //Android 4.4或以上处理图片方法 handleImageOnKitKat(data); } else { //Android 4.4以下处理图片方法 handleImageBeforeKitKat(data); }*/ } break; //裁剪后的效果 case UCrop.REQUEST_CROP: if(resultCode==RESULT_OK){ Uri resultUri=UCrop.getOutput(data); try { Bitmap bitmap=BitmapFactory.decodeStream(getContentResolver().openInputStream(resultUri)); headimageView.setImageBitm 4000 ap(bitmap); } catch (FileNotFoundException e) { e.printStackTrace(); } } break; //错误裁剪的结果 case UCrop.RESULT_ERROR: if(resultCode==RESULT_OK){ final Throwable cropError = UCrop.getError(data); handleCropError(cropError); } break; } } //处理剪切失败的返回值 private void handleCropError(Throwable cropError) { deleteTempPhotoFile(); if (cropError != null) { Toast.makeText(MainActivity.this, cropError.getMessage(), Toast.LENGTH_LONG).show(); } else { Toast.makeText(MainActivity.this, "无法剪切选择图片", Toast.LENGTH_SHORT).show(); } } /** * 删除拍照临时文件 */ private void deleteTempPhotoFile() { File tempFile = new File(Environment.getExternalStorageDirectory() + File.separator + "output_iamge.jpg"); if (tempFile.exists() && tempFile.isFile()) { tempFile.delete(); } }
UCrop裁剪的参数,详细参数见:http://blog.csdn.net/u011771755/article/details/50676888
//图片裁剪的方法 private void startCrop(Uri uri){ UCrop.Options options = new UCrop.Options(); //裁剪后图片保存在文件夹中 Uri destinationUri = Uri.fromFile(new File(getExternalCacheDir(), "uCrop.jpg")); UCrop uCrop = UCrop.of(uri, destinationUri);//第一个参数是裁剪前的uri,第二个参数是裁剪后的uri uCrop.withAspectRatio(1,1);//设置裁剪框的宽高比例 //下面参数分别是缩放,旋转,裁剪框的比例 options.setAllowedGestures(UCropActivity.ALL,UCropActivity.NONE,UCropActivity.ALL); options.setToolbarTitle("移动和缩放");//设置标题栏文字 options.setCropGridStrokeWidth(2);//设置裁剪网格线的宽度(我这网格设置不显示,所以没效果) options.setCropFrameStrokeWidth(10);//设置裁剪框的宽度 options.setMaxScaleMultiplier(3);//设置最大缩放比例 options.setHideBottomControls(true);//隐藏下边控制栏 options.setShowCropGrid(false); //设置是否显示裁剪网格 options.setOvalDimmedLayer(true);//设置是否为圆形裁剪框 options.setShowCropFrame(false); //设置是否显示裁剪边框(true为方形边框) options.setToolbarWidgetColor(Color.parseColor("#ffffff"));//标题字的颜色以及按钮颜色 options.setDimmedLayerColor(Color.parseColor("#AA000000"));//设置裁剪外颜色 options.setToolbarColor(Color.parseColor("#000000")); // 设置标题栏颜色 options.setStatusBarColor(Color.parseColor("#000000"));//设置状态栏颜色 options.setCropGridColor(Color.parseColor("#ffffff"));//设置裁剪网格的颜色 options.setCropFrameColor(Color.parseColor("#ffffff"));//设置裁剪框的颜色 uCrop.withOptions(options); uCrop.start(this); }
相关文章推荐
- android studio 适配android7.0 android 6.0拍照调用系统裁剪工具实现头像上传功能
- Android 编辑头像功能简单实现实例(图片选取,裁剪)
- Android实现类似换QQ头像功能(图片裁剪)
- Android实现类似换QQ头像功能(图片裁剪)
- Android之圆形头像(实现相机拍摄+相册选择+图片裁剪功能)
- Android之圆形头像(实现相机拍摄+相册选择+图片裁剪功能)
- Android之UI学习篇七:ImageView实现适屏和裁剪图片的功能
- 第四篇 ANDROID窗口管理服务实现机制 窗口管理是ANDROID框架一个重要部分,主要包括如下功能: (1)Z-ordered的维护 (2)窗口的创建、销
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- Android裁剪固定大小头像的功能
- Android实现图片的裁剪(不调用系统功能)
- android用开源框架实现仿地图界面功能
- android图片裁剪功能实现详解
- android自定义View实现裁剪图片功能,不使用系统的
- Android 图片裁剪功能实现详解(类似QQ自定义头像裁剪)
- 使用Mina框架开发 QQ Android 客户端(3) 登陆功能的实现
- PHP Uploadify+jQuery.imgAreaSelect插件+AJAX 实现图片上传裁剪 仿微博头像上传功能
- Android之UI学习篇七:ImageView实现适屏和裁剪图片的功能