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 onResume() { super.onResume(); if(getActivity() instanceof PhotoPickerActivity){ PhotoPickerActivity photoPickerActivity = (PhotoPickerActivity) getActivity(); photoPickerActivity.updateTitleDoneItem(); } }
@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); } });
final int index = pagerFragment.getCurrentItem(); final String deletedPath = pagerFragment.getPaths().get(index); Snackbar snackbar = Snackbar.make(pagerFragment.getView(), R.string.__picker_deleted_a_photo, Snackbar.LENGTH_LONG); if (pagerFragment.getPaths().size() <= 1) { pagerFragment.getPaths().remove(index); pagerFragment.getViewPager().getAdapter().notifyDataSetChanged();
@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 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(); } }); }
@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 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(); } }
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); } } }
public void updateActionBarTitle() { if (actionBar != null) actionBar.setTitle( getString(R.string.__picker_image_index, pagerFragment.getViewPager().getCurrentItem() + 1, pagerFragment.getPaths().size())); } }