【移动应用开发技术】拍照剪切and获取sd卡中的图片_第1页
【移动应用开发技术】拍照剪切and获取sd卡中的图片_第2页
【移动应用开发技术】拍照剪切and获取sd卡中的图片_第3页
【移动应用开发技术】拍照剪切and获取sd卡中的图片_第4页
【移动应用开发技术】拍照剪切and获取sd卡中的图片_第5页
已阅读5页,还剩3页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

【移动应用开发技术】拍照剪切and获取sd卡中的图片

packagecom.truekey.alarmclock.user;importjava.io.File;importandroid.app.Activity;importandroid.app.Dialog;importandroid.content.Context;importandroid.content.Intent;importandroid.content.SharedPreferences;importandroid.graphics.Bitmap;importandroid.graphics.drawable.BitmapDrawable;importandroid.graphics.drawable.Drawable;import.Uri;importandroid.os.Bundle;importandroid.os.Environment;importvider.MediaStore;importandroid.view.Gravity;importandroid.view.LayoutInflater;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.view.Window;importandroid.widget.Button;importandroid.widget.ImageView;importandroid.widget.RelativeLayout.LayoutParams;importandroid.widget.TextView;importcom.truekey.alarmclock.R;publicclassUserInfoActivityextendsActivity{ImageViewuser_header_p_w_picpath;DialogpictureDialog;ViewpictureView;ButtontakePictureBtn,allPicture,cancle;privatestaticfinalintSCALE=15;//照片缩小比例StringimgBase64;StringfileName=null;ImageViewiv_title_left,iv_title_right;@OverrideprotectedvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.user_info_layout);iv_title_right=(ImageView)findViewById(R.id.iv_title_right);iv_title_left=(ImageView)findViewById(R.id.iv_title_left);user_header_p_w_picpath=(ImageView)findViewById(R.id.user_header_p_w_picpath);TextViewnicheng_tv=(TextView)findViewById(R.id.nicheng_tv);pictureDialog();}publicvoidonClick(Viewv){switch(v.getId()){caseR.id.user_header_p_w_picpath:pictureDialog.show();pictureDialog.getWindow().setLayout(LayoutParams.MATCH_PARENT,LayoutParams.WRAP_CONTENT);break;caseR.id.iv_title_right:finish();overridePendingTransition(R.anim.home_main_last_twoactivity_out,R.anim.ptr_slide_out_to_bottom);break;caseR.id.iv_title_left:finish();overridePendingTransition(R.anim.home_main_last_twoactivity_in,R.anim.ptr_slide_out_to_bottom);default:break;}}//拍照布局publicvoidpictureDialog(){pictureView=LayoutInflater.from(UserInfoActivity.this).inflate(R.layout.takepicture_dialog,null);cancle=(Button)pictureView.findViewById(R.id.cancle);takePictureBtn=(Button)pictureView.findViewById(R.id.take_picture);takePictureBtn.setOnClickListener(newButtonOnClickListener());//所有的图片选取。。allPicture=(Button)pictureView.findViewById(R.id.all_picture);//所有图片allPicture.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){Intentintent=newIntent(Intent.ACTION_PICK,null);intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"p_w_picpath/*");startActivityForResult(intent,1);}});//取消cancle.setOnClickListener(newOnClickListener(){@OverridepublicvoidonClick(Viewv){pictureDialog.dismiss();}});if(pictureView!=null){/*自定义对话框*/pictureDialog=newDialog(this,R.style.mydialog);pictureDialog.setContentView(pictureView);pictureDialog.setCancelable(false);Windowwindow=pictureDialog.getWindow();window.setWindowAnimations(R.style.AlterDialogAnima);window.setGravity(Gravity.BOTTOM);}}publicfinalstaticintCAMERA_RESULT=8888;//拍照获取图片privateclassButtonOnClickListenerimplementsView.OnClickListener{@OverridepublicvoidonClick(Viewv){Intentintent=newIntent(MediaStore.ACTION_IMAGE_CAPTURE);//下面这句指定调用相机拍照后的照片存储的路径intent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(newFile(Environment.getExternalStorageDirectory(),"xiaoma.jpg")));startActivityForResult(intent,2);}}@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){super.onActivityResult(requestCode,resultCode,data);if(resultCode==RESULT_OK){switch(requestCode){case1:startPhotoZoom(data.getData());break;//如果是调用相机拍照时case2:Filetemp=newFile(Environment.getExternalStorageDirectory()+"/xiaoma.jpg");startPhotoZoom(Uri.fromFile(temp));break;//取得裁剪后的图片case3:/***非空判断大家一定要验证,如果不验证的话,在剪裁之后如果发现不满意,要重新裁剪,丢弃*当前功能时,会报NullException,小马只在这个地方加下,大家可以根据不同情况在合适的地方做判断处理类似情况**/if(data!=null){setPicToView(data);}break;default:break;}}}/***裁剪图片方法实现**@paramuri*/publicvoidstartPhotoZoom(Uriuri){Intentintent=newIntent("com.android.camera.action.CROP");intent.setDataAndType(uri,"p_w_picpath/*");//下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪intent.putExtra("crop","true");//aspectXaspectY是宽高的比例intent.putExtra("aspectX",1);intent.putExtra("aspectY",1);//outputXoutputY是裁剪图片宽高intent.putExtra("outputX",150);intent.putExtra("outputY",150);intent.putExtra("return-data",true);startActivityForResult(intent,3);}/***保存裁剪之后的图片数据**@parampicdata*/privatevoidsetPicToView(Intentpicdata){Bundleextras=picdata.getExtras();if(extras!=null){Bitmapphoto=extras.getParcelable("data");Drawabledrawable=newBitmapDrawable(photo);pictureDialog.dismiss();//为防止原始图片过大导致内存溢出,这里先缩小原图显示,然后释放原始Bitmap占用的内存Bitmapchoosepicture=ImageTools.toRoundBitmap2(photo);//释放原始图片占用的内存,防止outofmemory异常发生photo.recycle();user_header_p_w_picpath.setImageBitmap(choosepicture);}}//用于保存图片publicvoidputSharedpreference(Stringtakepicture){SharedPreferencesshared=getSharedPreferences("temp",Context.MODE_PRIVATE);SharedPreferences.Editoredit=shared.edit();edit.putString("picture",takepicture);mit();}publicStringgetSh

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论