@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;
  }
Esempio n. 7
0
  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);
 }
Esempio n. 15
0
 @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);
 }
Esempio n. 18
0
 @Override
 public void setZoomTransitionDuration(int milliseconds) {
   mAttacher.setZoomTransitionDuration(milliseconds);
 }
Esempio n. 19
0
 @Override
 public Bitmap getVisibleRectangleBitmap() {
   return mAttacher.getVisibleRectangleBitmap();
 }
Esempio n. 20
0
 @Override
 public void setOnDoubleTapListener(GestureDetector.OnDoubleTapListener newOnDoubleTapListener) {
   mAttacher.setOnDoubleTapListener(newOnDoubleTapListener);
 }
Esempio n. 21
0
 @Override
 public boolean setDisplayMatrix(Matrix finalRectangle) {
   return mAttacher.setDisplayMatrix(finalRectangle);
 }
Esempio n. 22
0
 @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();
 }
Esempio n. 26
0
 @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);
 }
Esempio n. 30
0
 /** @deprecated use {@link #setRotationTo(float)} */
 @Override
 public void setPhotoViewRotation(float rotationDegree) {
   mAttacher.setRotationTo(rotationDegree);
 }