Android: квадратный TouchImageView?

В настоящее время я использую библиотеку TouchImageView здесь:

https://github.com/MikeOrtiz/TouchImageView

Это прекрасно работает, когда я заполняю весь экран телефона TouchImageView, но как бы я ограничил видимую область квадратом?

Я пробовал:

public class SquareTouchImageView extends TouchImageView {
    public SquareTouchImageView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public SquareTouchImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SquareTouchImageView(Context context, AttributeSet attrs,
            int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);

        int width = getMeasuredWidth();
        setMeasuredDimension(width, width);
    }
}

Но это не позволяет мне прокручивать вниз, чтобы показать остальную часть изображения (если оно выше, чем широко)

Есть ли способ, которым я могу включить квадратный TouchImageView?

Если так, то как я смогу это сделать?

1 ответ

Решение

Я решил это, выполнив следующие действия, и я надеюсь, что это поможет тем, у кого еще может возникнуть эта проблема в будущем.

public class SquareTouchImageView extends TouchImageView {
    public SquareTouchImageView(Context context) {
        super(context);
        // TODO Auto-generated constructor stub
    }

    public SquareTouchImageView(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public SquareTouchImageView(Context context, AttributeSet attrs,
            int defStyle) {
        super(context, attrs, defStyle);
    }

    @Override
    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        Drawable drawable = getDrawable();
        if (drawable == null || drawable.getIntrinsicWidth() == 0
                || drawable.getIntrinsicHeight() == 0) {
            setMeasuredDimension(0, 0);
            return;
        }

        int drawableWidth = drawable.getIntrinsicWidth();
        //int drawableHeight = drawable.getIntrinsicHeight();
        int widthSize = MeasureSpec.getSize(widthMeasureSpec);
        int widthMode = MeasureSpec.getMode(widthMeasureSpec);
        //int heightSize = widthSize;// MeasureSpec.getSize(heightMeasureSpec);
        //int heightMode = widthMode;// MeasureSpec.getMode(heightMeasureSpec);
        viewWidth = setViewSize(widthMode, widthSize, drawableWidth);
        viewHeight = viewWidth;// setViewSize(heightMode, heightSize,
                                // drawableHeight);

        //
        // Set view dimensions
        //
        setMeasuredDimension(viewWidth, viewHeight);

        //
        // Fit content within view
        //
        fitImageToView();
    }
}

Возможно, вам придется изменить некоторые переменные в TouchImageView из private в protected,

И XML:

    <com.aura.app.widget.SquareTouchImageView
        android:id="@+id/scrollingImage"
        android:layout_width="match_parent"
        android:layout_height="0dp"
        android:layout_alignParentLeft="true"
    android:layout_alignParentRight="true"
    android:layout_alignParentTop="true" />
Другие вопросы по тегам