相机相册简单调用

布局

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    tools:context=".MainActivity">

    <ImageView
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/image"
        android:src="@mipmap/ic_launcher"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn1"
        android:text="相机"/>
    <Button
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/btn2"
        android:text="相册"/>

</LinearLayout>

mainactivity代码

public class MainActivity extends AppCompatActivity implements View.OnClickListener {

    private ImageView imageView;
    private Button button1;
    private Button button2;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        imageView = findViewById(R.id.image);
        button1 = findViewById(R.id.btn1);
        button2 = findViewById(R.id.btn2);

        button1.setOnClickListener(this);
        button2.setOnClickListener(this);
    }

    @Override
    public void onClick(View view) {
        switch (view.getId()) {
            case R.id.btn1:
                Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
                intent.addCategory("android.intent.category.DEFAULT");
                startActivityForResult(intent, 1);
                break;
            case R.id.btn2:
                Intent intent1 = new Intent(Intent.ACTION_PICK);
                intent1.setType("image/*");
                startActivityForResult(intent1, 2);
                break;
        }
    }

    @Override
    protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
        if (resultCode == RESULT_OK) {
            switch (requestCode) {
                case 1:
                    //拿到拍照的照片去裁剪
                    Bitmap bitmap = data.getParcelableExtra("data");
                    if (bitmap != null) {
                        Intent intent = Paicrop(bitmap);
                        startActivityForResult(intent, 3);
                    }
                    break;
                case 2:
                    //拿到相册的照片去裁剪
                    Uri data1 = data.getData();
                    if (data1 != null) {
                        Intent intent = crop(data1);
                        startActivityForResult(intent, 4);
                    }
                    break;
                case 3:
                    //拍照照片裁剪完之后赋值
                    Bitmap bitmap1 = data.getParcelableExtra("data");
                    if (bitmap1 != null) {
                        imageView.setImageBitmap(bitmap1);
                    }
                    break;
                case 4:
                    //相册照片裁剪完之后赋值
                    Bitmap bitmap2 = (Bitmap) data.getExtras().get("data");
                    if (bitmap2 != null) {
                        imageView.setImageBitmap(bitmap2);
                    }
                    break;
            }
        }
    }

    /*
    * 相册裁剪
    * */
    private Intent crop(Uri data1) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setDataAndType(data1,"image/*");
        intent.putExtra("crop","true");
        intent.putExtra("aspectX",1);
        intent.putExtra("aspectY",1);
        intent.putExtra("outputX",250);
        intent.putExtra("outputY",250);
        intent.putExtra("outputFormat","JPRG");
        intent.putExtra("return-data",true);
        return intent;
    }

    private Intent Paicrop(Bitmap bitmap) {
        Intent intent = new Intent("com.android.camera.action.CROP");
        intent.setType("image/*");
        intent.putExtra("data",bitmap);
        intent.putExtra("crop",true);
        intent.putExtra("aspectX",1);
        intent.putExtra("aspectY",1);
        intent.putExtra("outputX",170);
        intent.putExtra("outputY",170);
        intent.putExtra("return-data",true);
        return intent;
    }
}

权限

 <uses-permission android:name="android.permission.CAMERA"/>
    <uses-permission android:name="android.permission.INTERNET"/>
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值