Android头像更换
来源:互联网 发布:c语言心形图案代码 编辑:程序博客网 时间:2024/04/27 20:59
直接上代码:
TestActivity.java
import java.io.File;import java.io.FileNotFoundException;import java.io.FileOutputStream;import java.io.IOException;import android.app.Activity;import android.content.Intent;import android.graphics.Bitmap;import android.graphics.BitmapFactory;import android.media.MediaScannerConnection;import android.net.Uri;import android.os.Bundle;import android.os.Environment;import android.view.View;import android.view.View.OnClickListener;import android.widget.ImageView;import android.widget.Toast;public class TestActivity extends Activity implements OnClickListener {/** 需要被更换的头像 */private ImageView mAvatar;/** 剪切后的map对象 */private Bitmap mBitmap;/** 头像文件 **/private File mFinalPicFile;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);initView();}private void initView() {mAvatar = (ImageView) findViewById(R.id.iv);mAvatar.setOnClickListener(this);}@Overridepublic void onClick(View v) {switch (v.getId()) {case R.id.iv:GetPicUtil.getImgFromLocal(this, 10000);break;default:break;}}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);if (10000 == requestCode) {// 从本地选择图片// 看完相册后,将点击的图片uri传给剪切板if (data != null) {Uri imgUrl = data.getData();zoomPhoto(imgUrl, requestCode);}}if (11000 == requestCode) {if (data != null) {Bundle bundle_2 = data.getExtras();mBitmap = (Bitmap) bundle_2.get("data");saveImage(mBitmap, getFinalPicFile());// 从截取相册头像返回// 判断文件长度不为0,用户执行了截取图片操作if (mFinalPicFile.length() != 0f) {// 在截取好的本地图片上传到服务器上// updateUserAvatar(mFinalPicFile);Bitmap bm = BitmapFactory.decodeFile(mFinalPicFile.getPath());mAvatar.setImageBitmap(bm);}}}}/** * 裁剪图片 * * @param uri * @param num_position */private void zoomPhoto(Uri uri, int num_position) {Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");intent.putExtra("crop", "true");intent.putExtra("scale", true); // 设置是否允许拉伸// aspectX aspectY 是宽高的比例intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);// outputX outputY 是裁剪图片宽高intent.putExtra("outputX", 256);intent.putExtra("outputY", 256);intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());// 设置输出格式intent.putExtra("return-data", true);// 这里必须要加1000startActivityForResult(intent, num_position + 1000);}/** * 获取剪切后图片的缓存路径 * * @return */private File getFinalPicFile() {// 临时文件名String temp = GetPicUtil.getPhotoFileName();/** * files下pictures的路径,String为文件夹名 * * 即:/mnt/sdcard/Android/data/'包名'/files/Pictures/'String' */File dirFile = new File(this.getExternalFilesDir(Environment.DIRECTORY_PICTURES),"avatar");if (!dirFile.exists()) {if (!dirFile.mkdir())try {throw new Exception("目录不存在,创建失败!");} catch (Exception e) {e.printStackTrace();}}// 默认在sdcard根目录下 可以自定义目录mFinalPicFile = new File(dirFile.getPath() + File.separator + temp);// 出错点,输出流的真实输出文件,也要进行判断路径,不存在时,要进行创建。if (!mFinalPicFile.exists()) {try {mFinalPicFile.createNewFile();} catch (IOException e) {e.printStackTrace();}}return mFinalPicFile;}/** * 缓存图片 * * @param bmp * @param file */private void saveImage(Bitmap bmp, File file) {file.mkdirs();try {FileOutputStream out = new FileOutputStream(file);bmp.compress(Bitmap.CompressFormat.JPEG, 100, out);out.flush();out.close();if (!file.exists()) {Toast.makeText(TestActivity.this, "文件路径出错", Toast.LENGTH_SHORT).show();}MediaScannerConnection.scanFile(this,new String[] { file.getAbsolutePath() }, null, null);} catch (FileNotFoundException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}}}
GetPicUtil.java
import java.io.File;import java.text.SimpleDateFormat;import java.util.Date;import android.annotation.SuppressLint;import android.app.Activity;import android.content.ActivityNotFoundException;import android.content.Intent;import android.net.Uri;import android.os.Environment;import android.provider.MediaStore;/** * 图片获取工具类 * * @author Administrator * */public class GetPicUtil{public static File mPhotoFile;public static String imageBasePath;public static void fromTakeAPhoto(Activity activity, int CAMERA_WITH_DATA){try{// 临时文件名String temp = getPhotoFileName();// 这里获得路径是项目在手机上安卓目录下,项目名下,files下pictures的路径,String为文件夹名File dirFile = new File(activity.getExternalFilesDir(Environment.DIRECTORY_PICTURES),"qtx");if (!dirFile.exists()){if (!dirFile.mkdir())try{throw new Exception("目录不存在,创建失败!");} catch (Exception e){e.printStackTrace();}}// 默认在sdcard根目录下 可以自定义目录mPhotoFile = new File(dirFile.getPath() + File.separator + temp);Intent cameraIntent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);cameraIntent.putExtra(MediaStore.EXTRA_OUTPUT,Uri.fromFile(mPhotoFile));activity.startActivityForResult(cameraIntent, CAMERA_WITH_DATA + 1);} catch (ActivityNotFoundException e){e.printStackTrace();}}// 获取拍照获取图片名@SuppressLint("SimpleDateFormat")public static String getPhotoFileName(){Date date = new Date(System.currentTimeMillis());SimpleDateFormat dateFormat = new SimpleDateFormat("'IMG'_yyyyMMdd_HHmmss");return dateFormat.format(date) + ".jpg";}/** * 获取本地图片 * * @param activity * @param requestCode */public static void getImgFromLocal(Activity activity, int requestCode){Intent localIntent = new Intent();localIntent.setAction(Intent.ACTION_PICK);localIntent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*");activity.startActivityForResult(localIntent, requestCode);}}
0 0
- Android头像更换
- android更换头像问题
- Android更换头像上传
- Android应用之更换头像
- Android更换头像功能实现
- Android实现点击更换头像
- 【Android】更换头像的实现
- Android更换头像功能实现
- Android实战一:更换头像
- Android中更换头像功能
- 更换头像
- Android开发实现用户头像更换
- Android开发实现用户头像更换
- Android中更换头像功能的实现
- 实现Android中更换头像功能
- quick cocos2d-x 与android实现更换头像
- Android调用系统相机或相册更换头像
- 5分钟实现Android中更换头像功能
- HDU 4971 A simple brute force problem.(最小割---最大权闭合)
- 嵌入式实时抢占操作系统PT(preemption thread)RTOS——抢占内核设计(1)
- [MySQL]Hibernate NativeSQL连接查询无法识别关联表名称相同列
- Linux下安装Oracle express
- 使用eclipse查看堆栈分配
- Android头像更换
- HTTP 的keepalive模式
- POJ 2070 Filling Out the Team(水题)
- Oracle 11g Express在Linux下安装配置注意事项
- 数组与指针
- Android学习 图片折叠效果的实现
- 学习OpenCV的学习笔记系列(三)显示图片及视频
- 上传应用程序到App Store 的具体操作流程
- K2 BPM Activity 节点 规则属性