Размер изображения в Android - PullRequest
1 голос
/ 06 декабря 2010

Для определенного изображения, скажем, на синем фоне, я могу получить его ширину и высоту в Android.Я могу отобразить его на экране, используя ImageView.Даже если я сохраню фон изображения прозрачным, я могу отобразить его на экране.Но все же, если я попытаюсь определить ширину или высоту изображения программно, я все равно получу то же, что и на предыдущем шаге.Чего я хотел добиться Есть ли способ, с помощью которого я могу получить точную высоту или ширину изображения минус прозрачный фон.

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

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

Спасибо

1 Ответ

2 голосов
/ 06 декабря 2010

Как вы настраиваете ImageView? В XML? И как вы пытаетесь восстановить ширину и высоту изображения? Допустим, вы используете XML, и что-то вроде этого:

<ImageView
    android:id="@+id/my_image"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:src="@drawable/my_image"
    />

Ваш ImageView будет того же размера, что и содержащееся в нем изображение. Таким образом, в коде вы можете либо проверить ширину и высоту ImageView, либо изображение, которое он содержит, и получить те же числа. Однако, если вы делаете что-то вроде этого:

<ImageView
    android:id="@+id/my_image"
    android:layout_width="fill_parent"
    android:layout_height="fill_parent"
    android:src="@drawable/my_image"
    android:scaleType="centerInside"
    />

Изображение может быть меньше, чем ImageView, поэтому, чтобы получить точный результат, вы можете попробовать что-то вроде следующего:

ImageView iv = (ImageView)findViewById(R.id.my_image);
Rect rect = iv.getDrawable().getBounds();
int height = rect.height();
int width = rect.width();

Возможно, существует более простой метод, но этот должен работать.

РЕДАКТИРОВАТЬ: если ваше фактическое изображение больше, чем его содержимое, с прозрачным фоном, вы должны фактически обрезать изображение до его содержимого в программе для редактирования фотографий.

...