1.实现图
2.实现过程
(1)图片选择页面是另外一个activity,点击图片选择之后跳转至选择图片的activity
(2)可以指定是否可以拍照和最大的选择图片数量
(3)这里主要就是实现PhotoPickerActivity
3.代码
当前activity:
Intent intent = new Intent(MyResourceActivity.this, PhotoPickerActivity.class); intent.putExtra(PhotoPickerActivity.EXTRA_SHOW_CAMERA, false); //是否使用拍照功能 intent.putExtra(PhotoPickerActivity.EXTRA_SELECT_MODE, 1); //选择图片的样式 intent.putExtra(PhotoPickerActivity.EXTRA_MAX_MUN, 100); //最大的图片数量 startActivityForResult(intent, REQUEST_CODE_PICK_PHOTO );PhotoPickerActivity实现
public class PhotoPickerActivity extends Activity implements PhotoAdapter.PhotoClickCallBack { public final static String TAG = "PhotoPickerActivity"; public final static String KEY_RESULT = "picker_result"; public final static int REQUEST_CAMERA = 1; /** * 是否显示相机 */ public final static String EXTRA_SHOW_CAMERA = "is_show_camera"; /** * 照片选择模式 */ public final static String EXTRA_SELECT_MODE = "select_mode"; /** * 最大选择数量 */ public final static String EXTRA_MAX_MUN = "max_num"; /** * 单选 */ public final static int MODE_SINGLE = 0; /** * 多选 */ public final static int MODE_MULTI = 1; /** * 默认最大选择数量 */ public final static int DEFAULT_NUM = 9; private final static String ALL_PHOTO = "所有图片"; /** * 文件夹列表是否处于显示状态 */ boolean mIsFolderViewShow = false; /** * 文件夹列表是否被初始化,确保只被初始化一次 */ boolean mIsFolderViewInit = false; /** * 初始化文件夹列表的显示隐藏动画 */ AnimatorSet inAnimatorSet = new AnimatorSet(); AnimatorSet outAnimatorSet = new AnimatorSet(); /** * 是否显示相机,默认不显示 */ private boolean mIsShowCamera = false; /** * 照片选择模式,默认是单选模式 */ private int mSelectMode = 0; /** * 最大选择数量,仅多选模式有用 */ private int mMaxNum; private GridView mGridView; private Map<String, PhotoFolder> mFolderMap; private List<Photo> mPhotoLists = new ArrayList<>(); private ArrayList<String> mSelectList = new ArrayList<>(); private PhotoAdapter mPhotoAdapter; private ProgressDialog mProgressDialog; private ListView mFolderListView; private TextView mPhotoNumTV; private TextView mPhotoNameTV; private Button mCommitBtn; /** * 拍照时存储拍照结果的临时文件 */ private File mTmpFile; /** * 获取照片的异步任务 */ private AsyncTask getPhotosTask = new AsyncTask() { @Override protected void onPreExecute() { mProgressDialog = ProgressDialog.show(PhotoPickerActivity.this, null, "loading..."); } @Override protected Object doInBackground(Object[] params) { mFolderMap = PhotoUtils.getPhotos( PhotoPickerActivity.this.getApplicationContext()); return null; } @Override protected void onPostExecute(Object o) { getPhotosSuccess(); } }; @Override protected voi

该博客介绍了如何在Android应用中实现一个图片选择器,包括从相册选择和拍照功能。用户可以指定是否显示拍照选项及最大选择图片数量。在PhotoPickerActivity中,通过Intent传递参数并初始化界面,使用GridView展示图片,同时支持切换文件夹列表。当用户选择图片后,将结果返回到上一级Activity。
7808

被折叠的 条评论
为什么被折叠?



