Newer
Older
GasOperationApp / app / src / main / java / com / casic / gasoperation / utils / PhotoView.java
[wangxitong] on 24 May 2021 4 KB first commit
/*******************************************************************************
 * Copyright 2011, 2012 Chris Banes.
 * <p/>
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 * <p/>
 * http://www.apache.org/licenses/LICENSE-2.0
 * <p/>
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 *******************************************************************************/
package com.casic.gasoperation.utils;

import android.content.Context;
import android.graphics.RectF;
import android.graphics.drawable.Drawable;
import android.net.Uri;
import android.util.AttributeSet;
import android.widget.ImageView;

public class PhotoView extends ImageView implements IPhotoView {

    private final PhotoViewAttacher mAttacher;

    private ScaleType mPendingScaleType;

    public PhotoView( Context context ) {
        this( context, null );
    }

    public PhotoView(Context context, AttributeSet attr ) {
        this( context, attr, 0 );
    }

    public PhotoView(Context context, AttributeSet attr, int defStyle ) {
        super( context, attr, defStyle );
        super.setScaleType( ScaleType.MATRIX );
        mAttacher = new PhotoViewAttacher( this );

        if ( null != mPendingScaleType ) {
            setScaleType( mPendingScaleType );
            mPendingScaleType = null;
        }
    }

    @Override
    public boolean canZoom() {
        return mAttacher.canZoom();
    }

    @Override
    public RectF getDisplayRect() {
        return mAttacher.getDisplayRect();
    }

    @Override
    public float getMinScale() {
        return mAttacher.getMinScale();
    }

    @Override
    public float getMidScale() {
        return mAttacher.getMidScale();
    }

    @Override
    public float getMaxScale() {
        return mAttacher.getMaxScale();
    }

    @Override
    public float getScale() {
        return mAttacher.getScale();
    }

    @Override
    public ScaleType getScaleType() {
        return mAttacher.getScaleType();
    }

    @Override
    public void setAllowParentInterceptOnEdge( boolean allow ) {
        mAttacher.setAllowParentInterceptOnEdge( allow );
    }

    @Override
    public void setMinScale( float minScale ) {
        mAttacher.setMinScale( minScale );
    }

    @Override
    public void setMidScale( float midScale ) {
        mAttacher.setMidScale( midScale );
    }

    @Override
    public void setMaxScale( float maxScale ) {
        mAttacher.setMaxScale( maxScale );
    }

    @Override
    // setImageBitmap calls through to this method
    public void setImageDrawable( Drawable drawable ) {
        super.setImageDrawable( drawable );
        if ( null != mAttacher ) {
            mAttacher.update();
        }
    }

    @Override
    public void setImageResource( int resId ) {
        super.setImageResource( resId );
        if ( null != mAttacher ) {
            mAttacher.update();
        }
    }

    @Override
    public void setImageURI( Uri uri ) {
        super.setImageURI( uri );
        if ( null != mAttacher ) {
            mAttacher.update();
        }
    }

    @Override
    public void setOnMatrixChangeListener( PhotoViewAttacher.OnMatrixChangedListener listener ) {
        mAttacher.setOnMatrixChangeListener( listener );
    }

    @Override
    public void setOnLongClickListener( OnLongClickListener l ) {
        mAttacher.setOnLongClickListener( l );
    }


    @Override
    public void setOnPhotoTapListener( PhotoViewAttacher.OnPhotoTapListener listener ) {
        mAttacher.setOnPhotoTapListener( listener );
    }

    @Override
    public void setOnViewTapListener( PhotoViewAttacher.OnViewTapListener listener ) {
        mAttacher.setOnViewTapListener( listener );
    }

    @Override
    public void setScaleType( ScaleType scaleType ) {
        if ( null != mAttacher ) {
            mAttacher.setScaleType( scaleType );
        } else {
            mPendingScaleType = scaleType;
        }
    }

    @Override
    public void setZoomable( boolean zoomable ) {
        mAttacher.setZoomable( zoomable );
    }

    @Override
    public void zoomTo( float scale, float focalX, float focalY ) {
        mAttacher.zoomTo( scale, focalX, focalY );
    }

    @Override
    protected void onDetachedFromWindow() {
        mAttacher.cleanup();
        super.onDetachedFromWindow();
    }

}