Note that there are some explanatory texts on larger screens.

plurals
  1. POHow to implement the ScrollImageView class in my Android application
    primarykey
    data
    text
    <p>I found this class:</p> <pre><code> import android.content.Context; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Paint; import android.util.AttributeSet; import android.view.Display; import android.view.MotionEvent; import android.view.View; import android.view.WindowManager; // borrowed from https://sites.google.com/site/androidhowto/how-to-1/custom-scrollable-image-view public class ScrollImageView extends View { private final int DEFAULT_PADDING = 10; private Display mDisplay; private Bitmap mImage; /* Current x and y of the touch */ private float mCurrentX = 0; private float mCurrentY = 0; private float mTotalX = 0; private float mTotalY = 0; /* The touch distance change from the current touch */ private float mDeltaX = 0; private float mDeltaY = 0; int mDisplayWidth; int mDisplayHeight; int mPadding; public ScrollImageView(Context context) { super(context); initScrollImageView(context); } public ScrollImageView(Context context, AttributeSet attributeSet) { super(context); initScrollImageView(context); } private void initScrollImageView(Context context) { mDisplay = ((WindowManager)context.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay(); mPadding = DEFAULT_PADDING; } @Override protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) { int width = measureDim(widthMeasureSpec, mDisplay.getWidth()); int height = measureDim(heightMeasureSpec, mDisplay.getHeight()); setMeasuredDimension(width, height); } private int measureDim(int measureSpec, int size) { int result = 0; int specMode = MeasureSpec.getMode(measureSpec); int specSize = MeasureSpec.getSize(measureSpec); if (specMode == MeasureSpec.EXACTLY) { result = specSize; } else { result = size; if (specMode == MeasureSpec.AT_MOST) { result = Math.min(result, specSize); } } return result; } public Bitmap getImage() { return mImage; } public void setImage(Bitmap image) { mImage = image; } public int getPadding() { return mPadding; } public void setPadding(int padding) { this.mPadding = padding; } @Override public boolean onTouchEvent(MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_DOWN) { mCurrentX = event.getRawX(); mCurrentY = event.getRawY(); } else if (event.getAction() == MotionEvent.ACTION_MOVE) { float x = event.getRawX(); float y = event.getRawY(); // Update how much the touch moved mDeltaX = x - mCurrentX; mDeltaY = y - mCurrentY; mCurrentX = x; mCurrentY = y; invalidate(); } // Consume event return true; } @Override protected void onDraw(Canvas canvas) { if (mImage == null) { return; } float newTotalX = mTotalX + mDeltaX; // Don't scroll off the left or right edges of the bitmap. if (mPadding > newTotalX && newTotalX > getMeasuredWidth() - mImage.getWidth() - mPadding) mTotalX += mDeltaX; float newTotalY = mTotalY + mDeltaY; // Don't scroll off the top or bottom edges of the bitmap. if (mPadding > newTotalY && newTotalY > getMeasuredHeight() - mImage.getHeight() - mPadding) mTotalY += mDeltaY; Paint paint = new Paint(); canvas.drawBitmap(mImage, mTotalX, mTotalY, paint); } }</code></pre> <p>and am stumped how to use it with my application. </p> <p>I want my application when in landscape orientation to display a bitmap image that is scrollable vertically and horizontally. I pull my image from a URL and programatically make it a bitmap. I call a method that returns my bitmap image. </p> <p>Any ideas?</p>
    singulars
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    plurals
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
    1. This table or related slice is empty.
 

Querying!

 
Guidance

SQuiL has stopped working due to an internal error.

If you are curious you may find further information in the browser console, which is accessible through the devtools (F12).

Reload