@Override public void setImageURI(Uri uri) { super.setImageURI(uri); if (null != mAttacher) { mAttacher.update(); } }
@Override public void setImageResource(int resId) { super.setImageResource(resId); if (null != mAttacher) { mAttacher.update(); } }
@Override public void setScaleType(ScaleType scaleType) { if (null != mAttacher) { mAttacher.setScaleType(scaleType); } else { mPendingScaleType = scaleType; } }
@Override // setImageBitmap calls through to this method public void setImageDrawable(Drawable drawable) { super.setImageDrawable(drawable); if (null != mAttacher) { mAttacher.update(); } }
@Override public boolean onSingleTapConfirmed(MotionEvent e) { if (this.photoViewAttacher == null) return false; ImageView imageView = photoViewAttacher.getImageView(); if (null != photoViewAttacher.getOnPhotoTapListener()) { final RectF displayRect = photoViewAttacher.getDisplayRect(); if (null != displayRect) { final float x = e.getX(), y = e.getY(); // Check to see if the user tapped on the photo if (displayRect.contains(x, y)) { float xResult = (x - displayRect.left) / displayRect.width(); float yResult = (y - displayRect.top) / displayRect.height(); photoViewAttacher.getOnPhotoTapListener().onPhotoTap(imageView, xResult, yResult); return true; } } } if (null != photoViewAttacher.getOnViewTapListener()) { photoViewAttacher.getOnViewTapListener().onViewTap(imageView, e.getX(), e.getY()); } return false; }
@Override public boolean onDoubleTap(MotionEvent ev) { if (photoViewAttacher == null) return false; try { float scale = photoViewAttacher.getScale(); float x = ev.getX(); float y = ev.getY(); if (scale < photoViewAttacher.getMediumScale()) { photoViewAttacher.setScale(photoViewAttacher.getMediumScale(), x, y, true); } else if (scale >= photoViewAttacher.getMediumScale() && scale < photoViewAttacher.getMaximumScale()) { photoViewAttacher.setScale(photoViewAttacher.getMaximumScale(), x, y, true); } else { photoViewAttacher.setScale(photoViewAttacher.getMinimumScale(), x, y, true); } } catch (ArrayIndexOutOfBoundsException e) { // Can sometimes happen when getX() and getY() is called } return true; }
protected void init() { if (null == mAttacher || null == mAttacher.getImageView()) { mAttacher = new PhotoViewAttacher(this); } if (null != mPendingScaleType) { setScaleType(mPendingScaleType); mPendingScaleType = null; } // if (mDraweeHolder == null) { // GenericDraweeHierarchy hierarchy = new // GenericDraweeHierarchyBuilder(getResources()) // .setFadeDuration(800) // .setProgressBarImage(getResources().getDrawable(R.mipmap.ic_launcher)) // .setFailureImage(getResources().getDrawable(R.mipmap.pic_failure)) // .setRetryImage(getResources().getDrawable(R.mipmap.pic_failure)) // .build(); // mDraweeHolder = DraweeHolder.create(hierarchy, getContext()); // } }
@Override public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); progressBar.setVisibility(View.VISIBLE); final ImageView image = mImageView; image.setTag(mImageUrl); Bitmap bm = AsyncImageManager.getInstance() .loadImage( PathConstant.ICON_ROOT_PATH, mImageUrl.hashCode() + "", mImageUrl, true, false, new AsyncImageLoadedCallBack() { @Override public void imageLoaded(Bitmap imageBitmap, String imgUrl) { if (imageBitmap == null) { image.setImageResource(R.drawable.game_info_gry_load_bg_after); progressBar.setVisibility(View.GONE); mAttacher.update(); } else { if (image.getTag().equals(imgUrl)) { image.setImageBitmap(imageBitmap); progressBar.setVisibility(View.GONE); mAttacher.update(); } } } }); if (bm != null) { image.setImageBitmap(bm); progressBar.setVisibility(View.GONE); mAttacher.update(); } else { // 默认 } }
@Override public View onCreateView( LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { final View v = inflater.inflate(R.layout.image_detail_fragment, container, false); mImageView = (ImageView) v.findViewById(R.id.image); mAttacher = new PhotoViewAttacher(mImageView); mAttacher.setOnPhotoTapListener( new OnPhotoTapListener() { @Override public void onPhotoTap(View arg0, float arg1, float arg2) { if (getActivity() == null) { return; } getActivity().finish(); getActivity() .overridePendingTransition(android.R.anim.fade_in, android.R.anim.fade_out); } }); progressBar = (ProgressBar) v.findViewById(R.id.loading); return v; }
@Override public boolean canZoom() { return mAttacher.canZoom(); }
@Override public RectF getDisplayRect() { return mAttacher.getDisplayRect(); }
@Override public void zoomTo(float scale, float focalX, float focalY) { mAttacher.zoomTo(scale, focalX, focalY); }
@Override protected void onDetachedFromWindow() { mAttacher.cleanup(); super.onDetachedFromWindow(); }
@Override public void setMaxScale(float maxScale) { mAttacher.setMaxScale(maxScale); }
@Override public void setRotationBy(float rotationDegree) { mAttacher.setRotationBy(rotationDegree); }
@Override public void setOnLongClickListener(OnLongClickListener l) { mAttacher.setOnLongClickListener(l); }
@Override public void setAllowParentInterceptOnEdge(boolean allow) { mAttacher.setAllowParentInterceptOnEdge(allow); }
@Override public void setZoomTransitionDuration(int milliseconds) { mAttacher.setZoomTransitionDuration(milliseconds); }
@Override public Bitmap getVisibleRectangleBitmap() { return mAttacher.getVisibleRectangleBitmap(); }
@Override public void setOnDoubleTapListener(GestureDetector.OnDoubleTapListener newOnDoubleTapListener) { mAttacher.setOnDoubleTapListener(newOnDoubleTapListener); }
@Override public boolean setDisplayMatrix(Matrix finalRectangle) { return mAttacher.setDisplayMatrix(finalRectangle); }
@Override public Matrix getDisplayMatrix() { return mAttacher.getDrawMatrix(); }
@Override public float getScale() { return mAttacher.getScale(); }
@Override public void setOnViewTapListener(OnViewTapListener listener) { mAttacher.setOnViewTapListener(listener); }
@Override public ScaleType getScaleType() { return mAttacher.getScaleType(); }
@Override public void setScale(float scale, float focalX, float focalY, boolean animate) { mAttacher.setScale(scale, focalX, focalY, animate); }
@Override public void setMidScale(float midScale) { mAttacher.setMidScale(midScale); }
@Override public void setZoomable(boolean zoomable) { mAttacher.setZoomable(zoomable); }
@Override public void setOnMatrixChangeListener(OnMatrixChangedListener listener) { mAttacher.setOnMatrixChangeListener(listener); }
/** @deprecated use {@link #setRotationTo(float)} */ @Override public void setPhotoViewRotation(float rotationDegree) { mAttacher.setRotationTo(rotationDegree); }