Android实现QQ风格照片选择器代码示例

1 下载量 32 浏览量 更新于2024-08-29 收藏 83KB PDF 举报
在Android开发中,实现QQ风格的图片说说照片选择功能是一项常见的需求,它可以让用户方便地从相册或相机选择图片,适用于各种社交应用的分享功能。本文将详细介绍如何通过简单的布局和代码来实现这一效果。 首先,我们来看一下效果展示。在布局方面,设计的核心是一个GridView,它展示了用户可以选择的照片列表。在"activity_add_photo.xml"布局文件中,创建了一个垂直方向的LinearLayout作为主容器,设置了宽度和高度为match_parent,以适应屏幕大小。顶部有一个RelativeLayout,包含一个用于输入文字的TextView("写动态")和一个发送按钮("发送"),整体背景颜色为#00BB9C,清晰易见。 GridView的选择部分主要通过以下组件实现: 1. `<GridView>`:这是显示图片的组件,通过设置`android:layout_width`和`android:layout_height`为match_parent,确保网格可以完整填充父视图,用户可以通过滚动浏览照片。为了获取用户选择的图片,GridView需要配合Adapter来填充图片URI,并监听用户的选择事件。 2. `Adapter`:通常使用`BaseAdapter`或者自定义的`ArrayAdapter`或`CursorAdapter`来管理图片数据。这个适配器需要处理将图片转换为Bitmap,以及在用户点击时更新选择状态。 3. 图片选择逻辑:当用户点击GridView中的图片时,通常会触发一个点击事件,该事件处理器会从系统获取图片的URI,将其添加到一个列表中,并可能显示预览。用户可以选择多个图片,所以可能需要维护一个选中的图片集合。 4. 用户界面交互:除了图片选择,布局还需要处理文字输入和发送操作。例如,"send"按钮的点击事件可能会清空输入框,检查图片选择情况,然后将选定的图片、文字和可能的地理位置等信息发送到服务器。 5. 安全与权限:在实际应用中,别忘了处理用户的隐私,确保在请求访问用户相册或相机时获取权限,并遵循Android的权限管理机制。 通过以上步骤,开发者可以轻松地在Android应用中实现QQ图片说说的类似功能,为用户提供直观且易用的图片选择体验。同时,代码编写时要注意性能优化,如图片加载策略、内存管理等,以确保流畅的用户体验。
2019-09-24 上传
Android 仿QQ图片选择器,包含图片裁剪,浏览大图功能。   博客地址:http://blog.csdn.net/junzia/article/details/53091606简单使用示例如需使用图片选择器功能,将chooser加入为依赖工程,然后使用指定功能:选择单张图片如果需要选择单张图片,调用:Intent intent=new Intent(IcFinal.ACTION_ALBUM); intent.putExtra(IcFinal.INTENT_MAX_IMG,1);   startActivityForResult(intent,1);裁剪如果需要选择单张图片并且裁剪,调用:Intent intent=new Intent(IcFinal.ACTION_ALBUM); intent.putExtra(IcFinal.INTENT_IS_CROP,true); startActivityForResult(intent,1);默认为圆形图片,大小为500*500。如果需要自行设定,给intent增加以下参数(目前功能未实现):intent.putExtra(IcFinal.INTENT_CROP_SHAPE,CropPath.SHAPE_RECT);   //矩形intent.putExtra(IcFinal.INTENT_CROP_WIDTH,512); //裁剪宽度intent.putExtra(IcFinal.INTENT_CROP_HEIGHT,280); //裁剪高度选择多张图片Intent intent=new Intent(IcFinal.ACTION_ALBUM); intent.putExtra(IcFinal.INTENT_MAX_IMG,9); startActivityForResult(intent,1);更多设置也许图片选择器默认的UI不符合你的要求,你可以选择利用ChooserSetting中的静态参数来更改图片选择器的效果:/**标题的背景颜色*/public static int TITLE_COLOR=0xFF584512;/**图片选择页,每行显示数*/public static int NUM_COLUMNS=3;/**图片加载失败的图片*/public static int errorResId=0;/**图片加载的占位图片*/public static int placeResId=R.mipmap.image_chooser_placeholder;/**图片加载的动画*/public static int loadAnimateResId=0;/**选中图片的滤镜颜色*/public static int chooseFilter=0x55000000;/**未被选中的图片的滤镜颜色*/public static int unChooseFilter=0;/**最新的图片集合显示名字*/public static String newestAlbumName="最新图片";/**最新图片集合的最大数量*/public static int newestAlbumSize=100;public static int albumPopupHeight=600;public static String tantoToast="";/**照片选择指示器*/public static IChooseDrawable chooseDrawable=new CircleChooseDrawable(true,0xFF25c2e6);如果这些也无法满足你的UI要求,你也可以参照EntryActivity重新写相册的入口Activity,参照CropActivity重写裁剪的入口Activity。