通过拍照或选择本地图片并剪裁图片设置成头像
来源:互联网 发布:淘宝金牌卖家显示出来 编辑:程序博客网 时间:2024/05/29 17:14
- import java.io.File;
- import android.app.AlertDialog;
- import android.content.Context;
- import android.content.DialogInterface;
- import android.content.Intent;
- import android.graphics.Bitmap;
- import android.graphics.drawable.BitmapDrawable;
- import android.graphics.drawable.Drawable;
- import android.net.Uri;
- import android.os.Bundle;
- import android.os.Environment;
- import android.provider.MediaStore;
- import android.util.Log;
- import android.view.View;
- import android.widget.Button;
- import android.widget.Toast;
- public class CropActivity extends BaseActivity {
- private Context context;
- private Button btn_crop;
- private String[] items = new String[] { "选择本地图片", "拍照" };
- /*头像名称*/
- private static final String IMAGE_FILE_NAME = "faceImage.jpg";
- /* 请求码*/
- private static final int IMAGE_REQUEST_CODE = 0;
- private static final int CAMERA_REQUEST_CODE = 1;
- private static final int RESULT_REQUEST_CODE = 2;
- @Override
- public void onCreate(Bundle savedInstanceState) {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.activity_crop);
- context=this;
- initViews();
- }
- @Override
- protected void onResume() {
- // TODO Auto-generated method stub
- super.onResume();
- initValues();
- }
- @Override
- protected void updateViews(Object o) {
- // TODO Auto-generated method stub
- }
- @Override
- protected void initViews() {
- // TODO Auto-generated method stub
- btn_crop=(Button)findViewById(R.id.btn_crop);
- btn_crop.setOnClickListener(new View.OnClickListener() {
- @Override
- public void onClick(View v) {
- // TODO Auto-generated method stub
- showDialog();
- }
- });
- }
- @Override
- protected void initValues() {
- // TODO Auto-generated method stub
- }
- @Override
- protected void initHandler() {
- // TODO Auto-generated method stub
- }
- private void showDialog() {
- new AlertDialog.Builder(this)
- .setTitle("设置头像")
- .setItems(items, new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- switch (which) {
- case 0:
- Intent intentFromGallery = new Intent();
- intentFromGallery.setType("image/*"); // 设置文件类型
- intentFromGallery.setAction(Intent.ACTION_GET_CONTENT);
- startActivityForResult(intentFromGallery,IMAGE_REQUEST_CODE);
- break;
- case 1:
- Intent intentFromCapture = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
- // 判断存储卡是否可以用,可用进行存储
- if (hasSdcard()) {
- intentFromCapture.putExtra(MediaStore.EXTRA_OUTPUT,
- Uri.fromFile(new File(Environment.getExternalStorageDirectory(),IMAGE_FILE_NAME)));
- }
- startActivityForResult(intentFromCapture,CAMERA_REQUEST_CODE);
- break;
- }
- }
- })
- .setNegativeButton("取消", new DialogInterface.OnClickListener() {
- @Override
- public void onClick(DialogInterface dialog, int which) {
- dialog.dismiss();
- }
- }).show();
- }
- @Override
- protected void onActivityResult(int requestCode, int resultCode, Intent data) {
- // 结果码不等于取消时候
- if (resultCode != RESULT_CANCELED) {
- switch (requestCode) {
- case IMAGE_REQUEST_CODE:
- startPhotoZoom(data.getData());
- break;
- case CAMERA_REQUEST_CODE:
- if (hasSdcard()) {
- File tempFile = new File(Environment.getExternalStorageDirectory(),IMAGE_FILE_NAME);
- startPhotoZoom(Uri.fromFile(tempFile));
- } else {
- showToast("未找到存储卡,无法存储照片!");
- }
- break;
- case RESULT_REQUEST_CODE:
- if (data != null) {
- setImageToView(data);
- }
- break;
- }
- }
- super.onActivityResult(requestCode, resultCode, data);
- }
- /**
- * 裁剪图片方法实现
- *
- * @param uri
- */
- public void startPhotoZoom(Uri uri) {
- if(uri==null){
- Log.i("tag", "The uri is not exist.");
- }
- Intent intent = new Intent("com.android.camera.action.CROP");
- intent.setDataAndType(uri, "image/*");
- // 设置裁剪
- intent.putExtra("crop", "true");
- // aspectX aspectY 是宽高的比例
- intent.putExtra("aspectX", 1);
- intent.putExtra("aspectY", 1);
- // outputX outputY 是裁剪图片宽高
- intent.putExtra("outputX", 320);
- intent.putExtra("outputY", 320);
- intent.putExtra("return-data", true);
- startActivityForResult(intent, 2);
- }
- /**
- * 保存裁剪之后的图片数据
- *
- * @param picdata
- */
- private void setImageToView(Intent data) {
- Bundle extras = data.getExtras();
- if (extras != null) {
- Bitmap photo = extras.getParcelable("data");
- Drawable drawable = new BitmapDrawable(photo);
- btn_crop.setBackgroundDrawable(drawable);
- }
- }
- }
0 0
- android开发 通过拍照或选择本地图片并剪裁图片设置成头像
- 通过拍照或选择本地图片并剪裁图片设置成头像
- 通过拍照或选择本地图片并剪裁图片设置成头像
- 通过拍照或选择本地图片并剪裁后设置头像
- Android拍照或选择本地图片并剪裁图片设置成头像
- Android 从本地图库或拍照后裁剪图片并设置头像
- android头像设置:从本地照片库或拍照获取并剪裁
- android头像设置:从本地照片库或拍照获取并剪裁
- android头像设置:从本地照片库或拍照获取并剪裁
- android选择图片、拍照、并剪裁
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- Android设置头像,手机拍照或从本地相册选取图片作为头像
- 选择图片或拍照设置图片
- android-显示选择本地图片或拍照
- 更换用户头像 调用手机相册或相机拍照 选择图片并裁剪
- 个人资料上传头像模块,拍照+图库+图片剪裁+圆形头像
- 概率面试题目总结
- C# byte数组转换string类型如何去掉结束符
- C#如今还能混的下去么,感觉前景不是很好啊!
- launchAnyWhere: Activity组件权限绕过漏洞解析(Google Bug 7699048 )
- MFC托盘图标双击后界面不在最前面的解决办法
- 通过拍照或选择本地图片并剪裁图片设置成头像
- NSIS详解
- yaffs2补丁与patch-ker.sh
- 从10G个数中找到中数
- WIN7的IE11中安装activex控件
- 用Django实现动态URL
- Object-c基础编程学习笔记-键值编码
- 用手触碰电脑即可破解密码
- 关于 多进程epoll 与 “惊群”问题