自定义用作头像的选择器

github:https://github.com/jiangjiangwei/ImageCrop

两个Button 和一个ImageView,布局就不用写了。

点击拍照:

Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
// 下面这句指定调用相机拍照后的照片存储的路径
intent.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Constants.PHOTONAME)));
startActivityForResult(intent, Constants.TAKE_PHOTO);

点击选择图库:

// 相册中选择
Intent intent = new Intent(Intent.ACTION_PICK, null);
intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");
startActivityForResult(intent, Constants.PICK_PHOTO);

从照相或图库返回:

if (requestCode == Constants.TAKE_PHOTO && resultCode == RESULT_OK) {
    Intent intent = new Intent(TouxiangActivity.this, ImageCropActivity.class);
    intent.putExtra("PHOTO_PATH",Constants.PHOTONAME);
    startActivityForResult(intent, Constants.CROP_BEAUTY);
}
if (requestCode == Constants.PICK_PHOTO && resultCode == RESULT_OK) {
    Uri selectedImage = data.getData();
    String[] filePathColumn = { MediaStore.Images.Media.DATA };
    Cursor cursor = getContentResolver().query(selectedImage,
            filePathColumn, null, null, null);
    cursor.moveToFirst();
    int columnIndex = cursor.getColumnIndex(filePathColumn[0]);
    String picturePath = cursor.getString(columnIndex);
    cursor.close();

    Intent intent = new Intent(TouxiangActivity.this, ImageCropActivity.class);
    intent.putExtra("PHOTO_PATH",picturePath);
    startActivityForResult(intent, Constants.CROP_BEAUTY);
}

剪切的界面:ImageCropActivity:

package com.example.administrator.taxicar.ui.activity;

import android.app.Activity;
import android.content.Intent;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.text.TextUtils;
import android.view.View;

import com.example.administrator.taxicar.R;
import com.example.administrator.taxicar.utils.Constants;
import com.example.administrator.taxicar.utils.FileUtis;
import com.example.administrator.taxicar.views.CropImageView;


/**
 * Created by Administrator on 2016/1/6.
 */
public class ImageCropActivity extends Activity {
    private Bitmap mBitmap;
    private String mPhotoPath;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_image_crop);
        Bundle b = getIntent().getExtras();
        if (b != null) {
            mPhotoPath = b.getString("PHOTO_PATH");
        }

        final CropImageView cropImageView = (CropImageView) findViewById(R.id.cropimageview);
        if (!TextUtils.isEmpty(mPhotoPath)) {
            try {
                mBitmap = BitmapFactory.decodeFile(mPhotoPath);
                Bitmap bm = FileUtis.scaleBitmap(mBitmap, mBitmap.getWidth() / 2, mBitmap.getHeight() / 2);
                mBitmap.recycle();
                cropImageView.setImageBitmap(bm);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }
        findViewById(R.id.sure).setOnClickListener(new View.OnClickListener() {

            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub
                // 保存图片到本地
                Bitmap bm = cropImageView.getCropImage();
                FileUtis.saveBitmap2File(bm, Constants.FILENAME);

                Intent intent = getIntent();
                // 将剪裁图片路径传递回去
                intent.putExtra("path", Constants.FILENAME);
                setResult(RESULT_OK, intent);
                finish();
            }
        });
    }
}

然后再返回,设置头像:

if (requestCode == Constants.CROP_BEAUTY && resultCode == RESULT_OK) {
    if (data != null) {
        final String path = data.getStringExtra("path");
        Bitmap b = BitmapFactory.decodeFile(path);
        if (b != null) {
            ivCropImage.setImageBitmap(b);
        }
    }
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值