boolean showCamera = getIntent().getBooleanExtra(EXTRA_SHOW_CAMERA, true); boolean showGif = getIntent().getBooleanExtra(EXTRA_SHOW_GIF, false); boolean previewEnabled = getIntent().getBooleanExtra(EXTRA_PREVIEW_ENABLED, true); setShowGif(showGif); setContentView(R.layout.__picker_activity_photo_picker); Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); setSupportActionBar(mToolbar); setTitle(R.string.__picker_title); ActionBar actionBar = getSupportActionBar(); maxCount = getIntent().getIntExtra(EXTRA_MAX_COUNT, DEFAULT_MAX_COUNT); int columnNumber = getIntent().getIntExtra(EXTRA_GRID_COLUMN, DEFAULT_COLUMN_NUMBER); originalPhotos = getIntent().getStringArrayListExtra(EXTRA_ORIGINAL_PHOTOS); pickerFragment = (PhotoPickerFragment) getSupportFragmentManager().findFragmentByTag("tag"); if (pickerFragment == null) { pickerFragment = PhotoPickerFragment .newInstance(showCamera, showGif, previewEnabled, columnNumber, maxCount, originalPhotos); getSupportFragmentManager() .beginTransaction() .replace(R.id.container, pickerFragment, "tag") .commit(); getSupportFragmentManager().executePendingTransactions();
@Override public boolean onCreateOptionsMenu(Menu menu) { if (!menuIsInflated) { getMenuInflater().inflate(R.menu.__picker_menu_picker, menu); menuDoneItem = menu.findItem(R.id.done); if (originalPhotos != null && originalPhotos.size() > 0) { menuDoneItem.setEnabled(true); menuDoneItem.setTitle( getString(R.string.__picker_done_with_count, originalPhotos.size(), maxCount)); } else { menuDoneItem.setEnabled(false); } menuIsInflated = true; return true; } return false; }
@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; } });
@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); }
public void addImagePagerFragment(ImagePagerFragment imagePagerFragment) { this.imagePagerFragment = imagePagerFragment; getSupportFragmentManager() .beginTransaction() .replace(R.id.container, this.imagePagerFragment) .addToBackStack(null) .commit(); }
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 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); } });
/** * 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(); } }