android实现换头像功能
来源:互联网 发布:数据互通的手游 编辑:程序博客网 时间:2024/05/11 18:06
因为想让图片圆形显示 所以用了 SimpleDrawView 也可以换成ImageView
具体代码如下:
private SimpleDraweeView mSdvs;private Bitmap head;// 头像Bitmapprivate static String path = "/sdcard/myHead/";// sd路径@Overridepublic View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(R.layout.loginfragment, null); initView(view); return view;}private void initView(View view) { mLogin = (TextView) view.findViewById(R.id.login); mLogin.setOnClickListener(this); mSdvs = (SimpleDraweeView) view.findViewById(R.id.sdvs); mSdvs.setOnClickListener(this); Bitmap bt = BitmapFactory.decodeFile(path + "head.jpg");// 从SD卡中找头像,转换成Bitmap if (bt != null) { @SuppressWarnings("deprecation") Drawable drawable = new BitmapDrawable(bt);// 转换成drawable mSdvs.setImageDrawable(drawable); } else { /** * 如果SD里面没有则需要从服务器取头像,取回来的头像再保存在SD中 * */ }}@Overridepublic void onClick(View view) { switch (view.getId()) { case R.id.login: //跳转到登陆页面 Intent intent = new Intent(getActivity(), MainActivity.class); getActivity().startActivity(intent); break; case R.id.sdvs: showTypeDialog();//更换头像 break; }}private void showTypeDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(getActivity()); final AlertDialog dialog = builder.create(); View view = View.inflate(getActivity(), R.layout.dialog_select_photo, null); TextView tv_select_gallery = (TextView) view.findViewById(R.id.tv_select_gallery); TextView tv_select_camera = (TextView) view.findViewById(R.id.tv_select_camera); tv_select_gallery.setOnClickListener(new View.OnClickListener() {// 在相册中选取 @Override public void onClick(View v) { Intent intent1 = new Intent(Intent.ACTION_PICK, null); intent1.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI, "image/*"); startActivityForResult(intent1, 1); dialog.dismiss(); } }); tv_select_camera.setOnClickListener(new View.OnClickListener() {// 调用照相机 @Override public void onClick(View v) { Intent intent2 = new Intent(MediaStore.ACTION_IMAGE_CAPTURE); intent2.putExtra(MediaStore.EXTRA_OUTPUT, Uri.fromFile(new File(Environment.getExternalStorageDirectory(), "head.jpg"))); startActivityForResult(intent2, 2);// 采用ForResult打开 dialog.dismiss(); } }); dialog.setView(view); dialog.show();}@Overridepublic void onActivityResult(int requestCode, int resultCode, Intent data) { switch (requestCode) { case 1: if (resultCode ==RESULT_OK) { cropPhoto(data.getData());// 裁剪图片 } break; case 2: if (resultCode == RESULT_OK) { File temp = new File(Environment.getExternalStorageDirectory() + "/head.jpg"); cropPhoto(Uri.fromFile(temp));// 裁剪图片 } break; case 3: if (data != null) { Bundle extras = data.getExtras(); head = extras.getParcelable("data"); if (head != null) { /** * 上传服务器代码 */ setPicToView(head);// 保存在SD卡中 mSdvs.setImageBitmap(head);// 用ImageView显示出来 } } break; default: break; } super.onActivityResult(requestCode, resultCode, data);}/** * 调用系统的裁剪功能 * * @param uri */public void cropPhoto(Uri uri) { 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", 150); intent.putExtra("outputY", 150); intent.putExtra("return-data", true); startActivityForResult(intent, 3);}private void setPicToView(Bitmap mBitmap) { String sdStatus = Environment.getExternalStorageState(); if (!sdStatus.equals(Environment.MEDIA_MOUNTED)) { // 检测sd是否可用 return; } FileOutputStream b = null; File file = new File(path); file.mkdirs();// 创建文件夹 String fileName = path + "head.jpg";// 图片名字 try { b = new FileOutputStream(fileName); mBitmap.compress(Bitmap.CompressFormat.JPEG, 100, b);// 把数据写入文件 } catch (FileNotFoundException e) { e.printStackTrace(); } finally { try { // 关闭流 b.flush(); b.close(); } catch (IOException e) { e.printStackTrace(); } }}
阅读全文
0 0
- android实现换头像功能
- 换头像的功能实现
- Android实现QQ换头像的对话框
- Android更换头像功能实现
- Android更换头像功能实现
- Android 实现头像上传功能
- 关于android换头像
- android换肤功能实现
- Android 实现换肤功能
- Android实现换肤功能
- Android 换肤功能实现
- Android设置头像上传功能实现
- Android--利用Bmob实现头像上传下载功能
- Android中更换头像功能的实现
- 实现Android中更换头像功能
- Android应用如何实现换肤功能
- Android应用如何实现换肤功能
- Android应用如何实现换肤功能
- 使用axis2解析wsdl生成Webservice客户端代码
- Spring MVC学习笔记:helloworld的实现+@RequestMapping 的使用(上集)
- 欢迎使用CSDN-markdown编辑器
- centos7 python3.X django mysql 安装部署
- 手把手教你配置一个强大的Vim
- android实现换头像功能
- ftl提示 eclipse freemarker ide 插件安装
- 【BZOJ】4300 绝世好题 DP
- mybatis-plus
- SpringMVC自定义参数返回处理器
- caffe中常见层的用法以及参数
- VHDL
- 自己动手实现一个简单的 IOC
- 阿里巴巴json操作,留着查询