Получить координаты растрового изображения из ImageView в два раза меньше - PullRequest
4 голосов
/ 12 октября 2011

У меня есть ImageView , содержащее Растровое изображение изображение. Изображение в два раза больше его контейнера. Я объявил, что onScroll() может перемещаться по изображению Bitmap . Как я могу получить координаты ImageView на изображении Bitmap ?

Bitmap bm = BitmapFactory.decodeResource(getResources(), R.drawable.image);
_iv.setImageBitmap(bm);
_iv.setAdjustViewBounds(true);
_iv.setMaxHeight(bm.getHeight());
_iv.setMaxWidth(bm.getWidth());
_iv.setScaleType(ImageView.ScaleType.CENTER);

Bitmap newBm = Bitmap.createScaledBitmap(bm, bm.getWidth() * 2, bm.getHeight() * 2, true);
_iv.setImageBitmap(newBm);

1 Ответ

0 голосов
/ 18 октября 2011

Я не нашел реального способа сделать это. Вот метод, который я использовал:

После создания ImageView перейдите к известному местоположению.

int ivX = 0;
int ivY = 0;

_iv.invalidate();
_iv.scrollTo(ivX, ivY);

Таким образом, у меня есть точные (x, y) координаты того, где я нахожусь. Затем я реализовал метод onScroll () и использовал сгенерированные расстояния для пересчета моих (x, y) координат:

@Override
public boolean onScroll(MotionEvent e1, MotionEvent e2, float distanceX, float distanceY) {
    //Add the scroll distance to the old X, Y coordinates
    ivX += distanceX;
    ivY += distanceY;

    //Scroll to the new location
    _iv.scrollTo(ivX, ivY);

    return false;
} //End onScroll()

Кроме того, чтобы лучше понять, как работает scrollTo() и как соотносятся координаты изображения и контейнера, перейдите по этой ссылке на другой мой пост.

...