@Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); bitmapUtils = BitmapHelper.getInstance(); // 选择图片数量 mDesireImageCount = getArguments().getInt(EXTRA_SELECT_COUNT); // 图片选择模式 final int mode = getArguments().getInt(EXTRA_SELECT_MODE); // 默认选择 if (mode == MODE_MULTI) { ArrayList<String> tmp = getArguments().getStringArrayList(EXTRA_DEFAULT_SELECTED_LIST); if (tmp != null && tmp.size() > 0) { resultList = tmp; } } // 是否显示照相机 mIsShowCamera = getArguments().getBoolean(EXTRA_SHOW_CAMERA, true); mImageAdapter = new ImageGridAdapter(getActivity(), mIsShowCamera); // 是否显示选择指示器 mImageAdapter.showSelectIndicator(mode == MODE_MULTI); mPopupAnchorView = view.findViewById(R.id.footer); mTimeLineText = (TextView) view.findViewById(R.id.timeline_area); // 初始化,先隐藏当前timeline mTimeLineText.setVisibility(View.GONE); mCategoryText = (TextView) view.findViewById(R.id.category_btn); // 初始化,加载所有图片 mCategoryText.setText(R.string.folder_all); mCategoryText.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { if (mFolderPopupWindow == null) { createPopupFolderList(mGridWidth, mGridHeight); } if (mFolderPopupWindow.isShowing()) { mFolderPopupWindow.dismiss(); } else { mFolderPopupWindow.show(); int index = mFolderAdapter.getSelectIndex(); index = index == 0 ? index : index - 1; mFolderPopupWindow.getListView().setSelection(index); } } }); mPreviewBtn = (Button) view.findViewById(R.id.preview); // 初始化,按钮状态初始化 if (resultList == null || resultList.size() <= 0) { mPreviewBtn.setText(R.string.preview); mPreviewBtn.setEnabled(false); } mPreviewBtn.setOnClickListener( new View.OnClickListener() { @Override public void onClick(View view) { // TODO 预览 } }); mGridView = (GridView) view.findViewById(R.id.grid); mGridView.setOnScrollListener(new MyScrollListener(bitmapUtils, false, true)); mGridView.setAdapter(mImageAdapter); mGridView .getViewTreeObserver() .addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener() { @Override @TargetApi(Build.VERSION_CODES.JELLY_BEAN) public void onGlobalLayout() { final int width = mGridView.getWidth(); final int height = mGridView.getHeight(); mGridWidth = width; mGridHeight = height; final int desireSize = getResources().getDimensionPixelOffset(R.dimen.image_size); final int numCount = width / desireSize; final int columnSpace = getResources().getDimensionPixelOffset(R.dimen.space_size); int columnWidth = (width - columnSpace * (numCount - 1)) / numCount; mImageAdapter.setItemSize(columnWidth); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN) { mGridView.getViewTreeObserver().removeOnGlobalLayoutListener(this); } else { mGridView.getViewTreeObserver().removeGlobalOnLayoutListener(this); } } }); mGridView.setOnItemClickListener( new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { if (mImageAdapter.isShowCamera()) { // 如果显示照相机,则第一个Grid显示为照相机,处理特殊逻辑 if (i == 0) { showCameraAction(); } else { // 正常操作 Image image = (Image) adapterView.getAdapter().getItem(i); selectImageFromGrid(image, mode); } } else { // 正常操作 Image image = (Image) adapterView.getAdapter().getItem(i); selectImageFromGrid(image, mode); } } }); mFolderAdapter = new FolderAdapter(getActivity()); }