@Override public void onResume() { super.onResume(); if(getActivity() instanceof PhotoPickerActivity){ PhotoPickerActivity photoPickerActivity = (PhotoPickerActivity) getActivity(); photoPickerActivity.updateTitleDoneItem(); } }
public static PhotoPickerFragment newInstance(boolean showCamera, boolean showGif, boolean previewEnable, int column, int maxCount, ArrayList<String> originalPhotos) { Bundle args = new Bundle(); args.putBoolean(EXTRA_CAMERA, showCamera); args.putBoolean(EXTRA_GIF, showGif); args.putBoolean(EXTRA_PREVIEW_ENABLED, previewEnable); args.putInt(EXTRA_COLUMN, column); args.putInt(EXTRA_COUNT, maxCount); args.putStringArrayList(EXTRA_ORIGIN, originalPhotos); PhotoPickerFragment fragment = new PhotoPickerFragment(); fragment.setArguments(args); return fragment; }
@Override public void onResume() { super.onResume(); if(getActivity() instanceof PhotoPickerActivity){ PhotoPickerActivity photoPickerActivity = (PhotoPickerActivity) getActivity(); photoPickerActivity.updateTitleDoneItem(); } }
public void updateTitleDoneItem(){ if(menuIsInflated){ if(pickerFragment != null && pickerFragment.isResumed()){ List<String> photos = pickerFragment.getPhotoGridAdapter().getSelectedPhotos(); int size = photos == null ? 0 : photos.size(); menuDoneItem.setEnabled(size > 0); if(maxCount > 1){ menuDoneItem.setTitle(getString(R.string.__picker_done_with_count, size, maxCount)); }else { menuDoneItem.setTitle(getString(R.string.__picker_done)); } }else if(imagePagerFragment != null && imagePagerFragment.isResumed()){ //预览界面 完成总是可点的,没选就把默认当前图片 menuDoneItem.setEnabled(true); } } }
@Override public boolean onOptionsItemSelected(MenuItem item) { if (item.getItemId() == android.R.id.home) { super.onBackPressed(); return true; } if (item.getItemId() == R.id.done) { Intent intent = new Intent(); ArrayList<String> selectedPhotos = null; if(pickerFragment != null){ selectedPhotos = pickerFragment.getPhotoGridAdapter().getSelectedPhotoPaths(); } //当在列表没有选择图片,又在详情界面时默认选择当前图片 if(selectedPhotos.size() <= 0){ if(imagePagerFragment != null && imagePagerFragment.isResumed()){ // 预览界面 selectedPhotos = imagePagerFragment.getCurrentPath(); } } if(selectedPhotos != null && selectedPhotos.size() > 0){ intent.putStringArrayListExtra(KEY_SELECTED_PHOTOS, selectedPhotos); setResult(RESULT_OK, intent); finish(); } return true; } return super.onOptionsItemSelected(item); }
@Override public void onClick(View view) { if (pagerFragment.getPaths().size() > 0) { pagerFragment.getPaths().add(index, deletedPath); } else { pagerFragment.getPaths().add(deletedPath); } pagerFragment.getViewPager().getAdapter().notifyDataSetChanged(); pagerFragment.getViewPager().setCurrentItem(index, true); } });
@Override public void onClick(View v, int position, boolean showCamera) { final int index = showCamera ? position - 1 : position; List<String> photos = photoGridAdapter.getCurrentPhotoPaths(); ImagePagerFragment imagePagerFragment = ImagePagerFragment.newInstance(photos, index); ((PhotoPickerActivity) getActivity()).addImagePagerFragment(imagePagerFragment); } });
public static ImagePagerFragment newInstance(List<String> paths, int currentItem) { ImagePagerFragment f = new ImagePagerFragment(); Bundle args = new Bundle(); args.putStringArray(ARG_PATH, paths.toArray(new String[paths.size()])); args.putInt(ARG_CURRENT_ITEM, currentItem); f.setArguments(args); return f; }
@Override public void onClick(View v) { if (listPopupWindow.isShowing()) { listPopupWindow.dismiss(); } else if (!getActivity().isFinishing()) { adjustHeight(); listPopupWindow.show(); } } });
@Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.__picker_activity_photo_pager); int currentItem = getIntent().getIntExtra(EXTRA_CURRENT_ITEM, 0); List<String> paths = getIntent().getStringArrayListExtra(EXTRA_PHOTOS); showDelete = getIntent().getBooleanExtra(EXTRA_SHOW_DELETE, true); if (pagerFragment == null) { pagerFragment = (ImagePagerFragment) getSupportFragmentManager().findFragmentById(R.id.photoPagerFragment); } pagerFragment.setPhotos(paths, currentItem); Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.setDisplayHomeAsUpEnabled(true); updateActionBarTitle(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { actionBar.setElevation(25); } } pagerFragment.getViewPager().addOnPageChangeListener(new ViewPager.SimpleOnPageChangeListener() { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { updateActionBarTitle(); } }); }
private void openCamera() { try { Intent intent = captureManager.dispatchTakePictureIntent(); startActivityForResult(intent, ImageCaptureManager.REQUEST_TAKE_PHOTO); } catch (IOException e) { e.printStackTrace(); } catch (ActivityNotFoundException e) { Log.e("PhotoPickerFragment", "No Activity Found to handle Intent", e); } }
@Override public void onBackPressed() { Intent intent = new Intent(); intent.putExtra(KEY_SELECTED_PHOTOS, pagerFragment.getPaths()); setResult(RESULT_OK, intent); finish(); super.onBackPressed(); }
@Override public void onRequestPermissionsResult(int requestCode, @NonNull String[] permissions, @NonNull int[] grantResults) { if (grantResults.length > 0 && grantResults[0] == PackageManager.PERMISSION_GRANTED) { switch (requestCode) { case PermissionsConstant.REQUEST_CAMERA: case PermissionsConstant.REQUEST_EXTERNAL_WRITE: if (PermissionsUtils.checkWriteStoragePermission(this) && PermissionsUtils.checkCameraPermission(this)) { openCamera(); } break; } } }
@Override public void onResultCallback(List<PhotoDirectory> dirs) { directories.clear(); directories.addAll(dirs); photoGridAdapter.notifyDataSetChanged(); listAdapter.notifyDataSetChanged(); adjustHeight(); } });
public void adjustHeight() { if (listAdapter == null) return; int count = listAdapter.getCount(); count = count < COUNT_MAX ? count : COUNT_MAX; if (listPopupWindow != null) { listPopupWindow.setHeight(count * getResources().getDimensionPixelOffset(R.dimen.__picker_item_directory_height)); } }
@Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); paths = new ArrayList<>(); Bundle bundle = getArguments(); if (bundle != null) { String[] pathArr = bundle.getStringArray(ARG_PATH); paths.clear(); if (pathArr != null) { paths = new ArrayList<>(Arrays.asList(pathArr)); } currentItem = bundle.getInt(ARG_CURRENT_ITEM); } mPagerAdapter = new PhotoPagerAdapter(Glide.with(this), paths); }
/** * Overriding this method allows us to run our exit animation first, then exiting * the activity when it complete. */ @Override public void onBackPressed() { if (imagePagerFragment != null && imagePagerFragment.isVisible()) { if (getSupportFragmentManager().getBackStackEntryCount() > 0) { getSupportFragmentManager().popBackStack(); } } else { super.onBackPressed(); } }
@Override public boolean onItemCheck(int position, Photo photo, final int selectedItemCount) { menuDoneItem.setEnabled(selectedItemCount > 0); if (maxCount <= 1) { List<String> photos = pickerFragment.getPhotoGridAdapter().getSelectedPhotos(); if (!photos.contains(photo.getPath())) { photos.clear(); pickerFragment.getPhotoGridAdapter().notifyDataSetChanged(); } return true; } if (selectedItemCount > maxCount) { Toast.makeText(getActivity(), getString(R.string.__picker_over_max_count_tips, maxCount), LENGTH_LONG).show(); return false; } if(maxCount > 1){ menuDoneItem.setTitle(getString(R.string.__picker_done_with_count, selectedItemCount, maxCount)); }else { menuDoneItem.setTitle(getString(R.string.__picker_done)); } return true; } });
public void updateActionBarTitle() { if (actionBar != null) actionBar.setTitle( getString(R.string.__picker_image_index, pagerFragment.getViewPager().getCurrentItem() + 1, pagerFragment.getPaths().size())); } }
@Override public void onActivityResult(int requestCode, int resultCode, Intent data) { if (requestCode == ImageCaptureManager.REQUEST_TAKE_PHOTO && resultCode == RESULT_OK) { if (captureManager == null) { FragmentActivity activity = getActivity(); captureManager = new ImageCaptureManager(activity); } captureManager.galleryAddPic(); if (directories.size() > 0) { String path = captureManager.getCurrentPhotoPath(); PhotoDirectory directory = directories.get(INDEX_ALL_PHOTOS); directory.getPhotos().add(INDEX_ALL_PHOTOS, new Photo(path.hashCode(), path)); directory.setCoverPath(path); photoGridAdapter.notifyDataSetChanged(); } } }