这是现在很多软件里面很常用的功能;

首先说下布局:布局文件非常简单,使用的是一个自定义的圆形头像;

当点击圆形头像的时候弹出一个popWindow,然后点击拍照,相册的时候调用系统的相机和系统的相册

布局文件:(circleImageView是一个自定义的控件集成ImageView)

    <!-- xmlns:app="http://schemas.android.com/apk/res-auto"  这个必须写上,不然不生效app:border_color="#00000000"                        去掉黑边框 --><com.circle.www.view.CircleImageViewxmlns:app="http://schemas.android.com/apk/res-auto"android:id="@+id/circleImageView"android:layout_width="100dp"android:layout_height="100dp"android:layout_centerInParent="true"app:border_color="#00000000" android:src="@drawable/g"/>

activity:调用系统相机相册:

int REQUESTCODE_CAMERA = 0;int REQUESTCODE_GALLERY = 1;int REQUESTCODE_CROP = 2;Bitmap changedImage;String newPath = null;Uri outputUri = null;// 启用系统相机protected void showCamera() {Intent intent = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);startActivityForResult(intent, REQUESTCODE_CAMERA);}// 启用系统protected void showPhone() {Intent intent = new Intent(Intent.ACTION_PICK, null);intent.setDataAndType(MediaStore.Images.Media.EXTERNAL_CONTENT_URI,"image/*");startActivityForResult(intent, REQUESTCODE_GALLERY);}@Overrideprotected void onActivityResult(int requestCode, int resultCode, Intent data) {super.onActivityResult(requestCode, resultCode, data);// 相机回调if (requestCode == REQUESTCODE_CAMERA) {if (resultCode == RESULT_OK) {Bundle bundle = data.getExtras();changedImage = (Bitmap) bundle.get("data");circleImageView.setImageBitmap(changedImage);}}// 相册回调else if (requestCode == REQUESTCODE_GALLERY) {if (resultCode == RESULT_OK) {String path = FileUtils.getPictureSelectedPath(data, this);newPath = CacheUtils.getImagePath(this, "sendImage/"+ TypeConverter.getUUID() + ".jpg");try {Bitmap bitmap = ImageResizer.decodeSampledBitmapFromFile(path, 400, 400);FileUtils.compressAndWriteFile(bitmap, this, newPath);startPhotoZoom(this, Uri.fromFile(new File(newPath)));} catch (IOException e) {e.printStackTrace();}}}// 裁剪回调else if (requestCode == REQUESTCODE_CROP) {if (resultCode == RESULT_OK) {try {changedImage = BitmapFactory.decodeStream(getContentResolver().openInputStream(outputUri));circleImageView.setImageBitmap(changedImage);} catch (FileNotFoundException e) {e.printStackTrace();}}}}private void startPhotoZoom(Activity activity, Uri uri) {Intent intent = new Intent("com.android.camera.action.CROP");intent.setDataAndType(uri, "image/*");// 下面这个crop=true是设置在开启的Intent中设置显示的VIEW可裁剪intent.putExtra("crop", "true");// aspectX aspectY 是宽高的比例intent.putExtra("aspectX", 1);intent.putExtra("aspectY", 1);// outputX outputY 是裁剪图片宽高intent.putExtra("outputX", 100);intent.putExtra("outputY", 100);intent.putExtra("scale", true);intent.putExtra("return-data", false);intent.putExtra(MediaStore.EXTRA_OUTPUT, outputUri);intent.putExtra("outputFormat", Bitmap.CompressFormat.JPEG.toString());intent.putExtra("noFaceDetection", true);activity.startActivityForResult(intent, REQUESTCODE_CROP);}

源码下载地址:

http://download.csdn.net/detail/zheng_jiao/9508966

  

android圆形头像:相机相册加载图片到圆形头像相关推荐

  1. Android Glide加载图片成圆形

    今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1.导入依赖 implementa ...

  2. android glide圆形图片,Android Glide加载图片成圆形

    释放双眼,带上耳机,听听看~! 今天,简单讲解android使用glide加载图片成圆形. 这个很简单,因为之前需要在RecyclerView里加载圆形图片,所以在网上查找了资料,很简单就解决了. 1 ...

  3. Android框架之路——Glide加载图片(结合RecyclerView、CardView)

    Android框架之路--Glide加载图片 一.简介: 在泰国举行的谷歌开发者论坛上,谷歌为我们介绍了一个名叫 Glide 的图片加载库,作者是bumptech.这个库被广泛的运用在google的开 ...

  4. Android 开发笔记 ListView异步加载图片

    当ListView需要在线获取数据,并且列表中需要显示图片时,友好的处理方式是使用异步加载图片的方式. 这是因为LIstView中显示的内容是分为两部加载的,第一次加载文本信息(包含图片的uri地址) ...

  5. Android实现异步从网络加载图片列表

     博文出处:http://blog.csdn.net/carterjin/article/details/7995935 有时会有在加载ListView的时候,包含用户头像或其他需要到网络获取的图 ...

  6. android多种方式实现异步加载图片

    记得之前做安卓应用时都是在2.2以下的版本,如果在UI线程中进行耗时操作,比如http,socket等 会产生android.os.NetworkOnMainThreadException 如果异步加 ...

  7. android grideview 图片png透明,Android完美解决GridView异步加载图片和加载大量图片时出现Out Of Memory问题...

    众所周知,我们在使用GridView或者ListView时,通常会遇到两个棘手的问题: 1.每个Item获取的数据所用的时间太长会导致程序长时间黑屏,更甚会导致程序ANR,也就是Application ...

  8. Android之使用Android-AQuery异步加载图片(一)

    第一节:转载地址(http://www.cnblogs.com/lee0oo0/archive/2012/10/25/2738299.html) // 必须实现AQuery这个类 AQuery aq ...

  9. android访问服务器文件,访问服务器(加载图片)

    一丶一个简单的访问服务器(访问网易新闻客户端)点击加载新闻:首页的布局文件 xmlns:tools="http://schemas.android.com/tools" andro ...

最新文章

  1. 为何协作机器人能够兴起?“协作机器人-激烈的市场谁能杀出重围”
  2. s2sh乱码一个小处理(新手按流程走)
  3. c语言sum出错,ACM:Sum Problem 求和问题C语言源码
  4. 关于Python中迭代器的作用
  5. 动态的添加和丢弃关键点---32
  6. 机房系统(五)——【Excel表导出】
  7. 使您的Java代码闻起来很新鲜
  8. 基于XMPP实现的Openfire的配置安装+Android客户端的实现
  9. SAP License:最近解决的一些SAP问题
  10. .NET Core跨平台:.NET Core项目部署到linux(Centos7)
  11. 哪本最具影响力的书,是每个程序员都应该读的?
  12. 学信网查学历和学位网查学位的基本操作
  13. 互联网无处不在的“推荐算法”解析
  14. c语言指针化简带分数,自动生成四则运算题目(C语言)
  15. 相机光学(十二)——面阵相机与线阵相机
  16. JS数字区间比较大小的写法
  17. Google Chrome 源码下载
  18. MATLAB Support Package Installer无法正常打开的问题
  19. 将u盘插入apple苹果系统后发现再插入window系统发现无法新建文件夹或者文件,新建new功能消失了
  20. matlab ezplot hod,Matlab学习笔记三:绘图

热门文章

  1. 不要因傲慢与偏见而拒绝基金
  2. 2020数字逻辑期末知识点总结
  3. [附源码]JSP+ssm计算机毕业设计桶装水配送管理系统h0zn3【源码、数据库、LW、部署】
  4. Weaning the Web off of Session Cookies Making Digest Authentication Viable
  5. 高通量筛选技术加速联合用药研究 | MedChemExpress
  6. 转 李开复微博爆谷歌公开C++编码规范 称全球最好
  7. a9 linux 程序下载,金山发布WPS for Linux A9下载
  8. 高速串口通信稳定_长虹配套珠峰5G通信装备 保障直播信号稳定高速传输
  9. 【C#-socket】网络通信实例(异步通信、多客户端异步通信、同步通信)
  10. 生活中的嵌入式,你家的电视已经周围的LED屏幕