Попытка получить растровый пиксель из onTouchListener ImageView - PullRequest
3 голосов
/ 18 апреля 2011

Я отображаю растровое изображение в ImageView.При касании ImageView я хотел бы получить координаты x / y пикселя для растрового изображения, в котором оно было использовано.Я зарегистрировал onTouchListener в ImageView, и в методе onTouch я использую getX и getY для определения местоположения касания.Проблема заключается в том, что изображение в ImageView может быть больше, чем само представление, поэтому оно уменьшается до размера экрана.Таким образом, возвращаемые координаты x и y являются координатами вида, но не обязательно координатами соответствующего пикселя на растровом изображении.

Могу ли я получить какой-то масштабный коэффициент, чтобы узнать, насколько он был изменен?Или, если нет, может кто-нибудь подсказать, как я могу получить необходимую мне информацию?Что наиболее важно, так это то, что я могу получить координаты пикселей - если мне нужно изменить тип представления, это нормально.

Кроме того, иногда растровое изображение меньше экрана, поэтому оно масштабируется.В этом сценарии возможно, что x и y, полученные от MotionEvent, находятся за пределами действительного битового массива.

Ответы [ 2 ]

0 голосов
/ 27 июня 2012

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

Вот код:

//Convert Uri to Bitmap
inputBitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), selectedImage);

//Scale the bitmap to fit in the ImageView
Bitmap bmpScaled = Bitmap.createScaledBitmap(inputBitmap, img.getWidth(), img.getHeight(),true);

//Set the scaled bitmap to the ImageView
img.setImageBitmap(bmpScaled);

После этого координаты касания совпадают с координатами растрового изображения.

0 голосов
/ 18 апреля 2011

Проверьте в свойстве ScaleType. Вам нужно будет сделать математику с исходным изображением, основываясь на результатах getScaleType (), но это стоит проверить.

...