Skip to content

Latest commit

 

History

6 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

图片裁剪(基于RxPaparazzo)




前言:基于RxPaparazzo的图片裁剪,图片旋转、比例放大|缩小。


效果:



开发环境:AndroidStudio2.2.1+gradle-2.14.1


引入依赖:

    compile 'com.android.support:appcompat-v7:24.+'
    //RxPaparazzo 拍照&相册
//    compile com.github.miguelbcr:RxPaparazzo:0.4.2-2.x;
    compile (com.github.miguelbcr:RxPaparazzo:0.5.2-2.x;) {
        exclude module: 'okhttp'
        exclude module: 'okio'
    }
    compile 'io.reactivex.rxjava2:rxandroid:2.0.1'
    compile 'com.android.support:cardview-v7:24.+'
//    compile 'com.android.support:customtabs:24.+'
    compile 'com.android.support:design:24.+'
    compile 'com.jakewharton:butterknife:7.0.1'



涉及知识:

1.Material Design(CardView+CoordinatorLayout+AppBarLayout+NestedScrollView+
CollapsingToolbarLayout+Toolbar+FloatingActionButton)使用

2.butterknife注解式开发

3.基于RxJava+RxAndroid的RxPaparazzo使用


部分代码:

public class MainActivity extends AppCompatActivity {

@Bind(R.id.iv_appbar)
ImageView iv_appbar;

@Bind(R.id.main_toolbar)
Toolbar toolbar;

/* @BindView(R.id.btn_float) FloatingActionButton btn_float;*/

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ButterKnife.bind(this);
    initToolBar();
}


private void initToolBar() {
    this.setSupportActionBar(toolbar);
    toolbar.setTitle("我的");
}

@OnClick({R.id.main_toolbar, R.id.btn_float})
public void onClick(View view) {
    final UCrop.Options options = new UCrop.Options();
    int color = ContextCompat.getColor(view.getContext(), R.color.colorPrimary);
    options.setToolbarColor(color);
    options.setStatusBarColor(ContextCompat.getColor(view.getContext(), R.color.colorPrimaryDark));
    options.setActiveWidgetColor(color);
    switch (view.getId()) {
        case R.id.main_toolbar:
            Toast.makeText(MainActivity.this, "Toolbar点击", Toast.LENGTH_SHORT).show();
            break;
        case R.id.btn_float: {
            showDialog(view, options);
            break;
        }
    }
}

private void showDialog(View view, final UCrop.Options options) {
    final Context context = view.getContext();
    final AlertDialog.Builder builder = new AlertDialog.Builder(context);
    builder.setTitle("设置背景图片:").setMessage("如何获取图片?")
            .setPositiveButton("相册", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();

// RxPaparazzo.takeImage(MainActivity.this) RxPaparazzo.single(MainActivity.this) .crop(options) .usingGallery() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Response<MainActivity, FileData>>() { @Override public void accept(Response<MainActivity, FileData> response) throws Exception { if (response.resultCode() == Activity.RESULT_OK) {

                                        File filePath = response.data().getFile();
                                        Bitmap bitmap = BitmapFactory.
                                                decodeFile(filePath.getPath());
                                        iv_appbar.setImageBitmap(bitmap);

                                    } else if (response.resultCode() == Activity.RESULT_CANCELED) {

                                        Toast.makeText(MainActivity.this, "取消相册访问",
                                                Toast.LENGTH_SHORT).show();

                                    } else {

                                        Toast.makeText(MainActivity.this, "未知错误!",
                                                Toast.LENGTH_SHORT).show();
                                    }
                                }
                            });
                }
            })
            .setNeutralButton("取消", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();
                }
            })
            .setNegativeButton("拍照", new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    dialog.dismiss();

// RxPaparazzo.takeImage(MainActivity.this) RxPaparazzo.single(MainActivity.this) .crop(options) .usingCamera() .subscribeOn(Schedulers.io()) .observeOn(AndroidSchedulers.mainThread()) .subscribe(new Consumer<Response<MainActivity, FileData>>() { @Override public void accept(Response<MainActivity, FileData> response) throws Exception {

                                    if (response.resultCode() == Activity.RESULT_OK) {
                                        FileData filePath = response.data();
                                        Bitmap bitmap = BitmapFactory.
                                                decodeFile(filePath.getFile().getPath());
                                        iv_appbar.setImageBitmap(bitmap);
                                    } else if (response.resultCode() == Activity.RESULT_CANCELED) {
                                        Toast.makeText(MainActivity.this, "取消拍照",
                                                Toast.LENGTH_SHORT).show();
                                    } else {
                                        Toast.makeText(MainActivity.this, "未知错误!",
                                                Toast.LENGTH_SHORT).show();
                                    }
                                }
                            });
                  
                }
            });

    AlertDialog dialog = builder.create();
    dialog.show();

    dialog.getButton(DialogInterface.BUTTON_POSITIVE).

            setTextColor(ContextCompat.getColor(context, R.color.colorPrimary)
            );
    dialog.getButton(DialogInterface.BUTTON_NEGATIVE).

            setTextColor(ContextCompat.getColor(context, R.color.colorPrimary)

            );
    dialog.getButton(DialogInterface.BUTTON_NEUTRAL).

            setTextColor(ContextCompat.getColor(context, R.color.colorAccent)

            );
}

@Override
protected void onDestroy() {
    super.onDestroy();
    ButterKnife.unbind(this);//解除绑定
}

}



About

基于RxPaparazzo的图片裁剪,图片旋转、比例放大|缩小。涉及Material Design+Cardview+butterknife,基于rxjava2的RxPaparazzo的使用

Resources

Stars

1 star

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages