前言:基于RxPaparazzo的图片裁剪,图片旋转,比例放大|缩小。
<>强效果:强>
,
<强>开发环境:强> AndroidStudio2.2.1 + gradle-2.14.1
<强>涉及知识:强>
1。材料设计
(CardView + CoordinatorLayout + AppBarLayout + NestedScrollView + CollapsingToolbarLayout +工具+ FloatingActionButton)使用,
2. butterknife注解式开发,
3。基于RxJava + RxAndroid的RxPaparazzo使用,
引入依赖:
编译“com.android.support: appcompat-v7:24 +”。//RxPaparazzo拍照,相册//编译“com.github.miguelbcr: RxPaparazzo: 0.4.2-2.x” 编译(“com.github.miguelbcr: RxPaparazzo: 0.5.2-2.x”) { 排除模块:“okhttp” 排除模块:“okio” } 编译的io.reactivex.rxjava2: rxandroid: 2.0.1 编译“com.android.support: cardview-v7:24 +”。//编译“com.android.support: customtabs: 24 +”。 编译“com.android.support:设计:24 +”。 编译“com.jakewharton: butterknife: 7.0.1” >之前部分代码:
公开课MainActivity延伸AppCompatActivity { @Bind (R.id.iv_appbar) ImageView iv_appbar; @Bind (R.id.main_toolbar) 工具栏工具栏;/* @Bind (R.id.btn_float) FloatingActionButton btn_float; */@Override 保护无效onCreate(包savedInstanceState) { super.onCreate (savedInstanceState); setContentView (R.layout.activity_main); ButterKnife.bind(这个); initToolBar (); } 私人空间initToolBar () { this.setSupportActionBar(工具栏); toolbar.setTitle(“我的”); } @OnClick ({R.id。main_toolbar R.id.btn_float}) 公共空间onClick(查看视图){ 最后UCrop。选择选项=new UCrop.Options (); int颜色=ContextCompat.getColor (view.getContext (), R.color.colorPrimary); options.setToolbarColor(颜色); R.color.colorPrimaryDark options.setStatusBarColor (ContextCompat.getColor (view.getContext ())); options.setActiveWidgetColor(颜色); 开关(view.getId ()) { 案例R.id.main_toolbar: Toast.makeText (MainActivity。这个,”工具栏点击”,Toast.LENGTH_SHORT),告诉(); 打破; R.id。btn_float: { showDialog(视图中,选择); 打破; } } } 私人空间showDialog(查看视图,最后UCrop。选择选项){ 最后的上下文背景=view.getContext (); 最后AlertDialog。Builder构建器=new AlertDialog.Builder(上下文); builder.setTitle(“设置背景图片:“).setMessage(“如何获取图片?”) .setPositiveButton(“相册”,新DialogInterface.OnClickListener () { @Override 公共空间onClick (DialogInterface对话框,int) { dialog.dismiss ();//RxPaparazzo.takeImage (MainActivity.this) RxPaparazzo.single (MainActivity.this) .crop(选项) .usingGallery () .subscribeOn (Schedulers.io ()) .observeOn (AndroidSchedulers.mainThread ()) .subscribe(新Consumer在(){ @Override 公共空间接受(Response {响应)抛出异常 如果(response.resultCode ()==Activity.RESULT_OK) { .getFile文件filePath=response.data () (); 位图的位图=BitmapFactory。 decodeFile (filePath.getPath ()); iv_appbar.setImageBitmap(位图); }else if (response.resultCode ()==Activity.RESULT_CANCELED) { Toast.makeText (MainActivity。这个,”取消相册访问”, Toast.LENGTH_SHORT),告诉(); 其他}{ Toast.makeText (MainActivity。这个,”未知错误!” Toast.LENGTH_SHORT),告诉(); } } }); } }) .setNeutralButton(“取消”,新DialogInterface.OnClickListener () { @Override 公共空间onClick (DialogInterface对话框,int) { dialog.dismiss (); } }) .setNegativeButton(“拍照”,新DialogInterface.OnClickListener () { @Override 公共空间onClick (DialogInterface对话框,int) { dialog.dismiss ();//RxPaparazzo.takeImage (MainActivity.this) RxPaparazzo.single (MainActivity.this) .crop(选项) .usingCamera () .subscribeOn (Schedulers.io ()) .observeOn (AndroidSchedulers.mainThread ()) .subscribe(新Consumer 在(){ @Override 公共空间接受(Response 基于RxPaparazzo实现图片裁剪,图片旋转,比例放大缩小功能