2016-06-03 2 views
-1

Я пытаюсь определить, как координаты X, Y работают в Android.Android - Уточнение X, Y Координаты и позиционирование ImageView Inside RelativeLayout

Если у меня есть ImageView внутри RelativeLayout, координаты X, Y - левый и верхний края ImageView или центр?

Кроме того, лучше всего использовать SetX() и SetY(), чтобы изменить положение ImageView внутри RelativeLayout, или сверху и слева?

<RelativeLayout 
     android:id="@+id/mainView" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:layout_gravity="center" 
     android:padding="0dp"> 
     <ImageView 
      android:id="@+id/imageView2" 
      android:layout_height="wrap_content" 
      android:layout_gravity="center" 
      android:layout_width="wrap_content" 
      android:layout_centerInParent="false" 
      android:src="@drawable/img" 
      android:padding="0dp" 
      android:background="@android:color/transparent" 
      android:visibility="visible" 
      android:layout_centerVertical="false" /> 
+0

куда вы хотите установить X и Y в коде? – Shubhank

+0

@Shubhank ImageView меняет положение на протяжении всей активности через анимацию. Когда I setx (0) для ImageView, есть разрыв между родителем RelativeLayout и изображением, отображаемым в ImageView. Это заставляет меня думать, что я неправильно понял, как работают координаты x, y. – user2966445

ответ

-1

Вам нужно установить поля с использованием макета Params:

RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT, RelativeLayout.LayoutParams.WRAP_CONTENT); 
params.setMargins(left, top, right, bottom); 
Button button1; 
button1.setLayoutParams(params); 

Также Вы можете добавить к правилам, как один вид зависит от другого, как это params.addRule(RelativeLayout.ALIGN_PARENT_LEFT, RelativeLayout.TRUE);

+0

Лучше ли использовать этот метод при анимации ImageView? Я в основном хочу показать ImageView с левой стороны экрана (начиная с экрана и появляться слева)? – user2966445

+0

Используйте ViewFlipper https://www.youtube.com/watch?v=E9i-5iqLEsY. Это самый простой способ –

+0

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

0

setX(), setY(), setLeft(), setRight() - это методы в классе Android View и, следовательно, унаследованы ImageView.

Согласно Android документации Setx,

void setX (float x) 

Устанавливает визуальное й положение этого точки зрения, в пикселях. Это эквивалентно тому, что свойство translationX является разницей между переданным значением x и текущим значением left.

Это означает, что ImageView (или, скорее, View) будет добавлен к его родительскому объекту (ViewGroup) со смещением X из позиции по умолчанию, в которой будет отображаться представление.

Свойства X и Y всегда рассчитываются сверху и слева.

Чтобы расположить ImageView в RelativeLayout, то лучше всего использовать,

layout_alignParentTop 
layout_alignParentLeft 
layout_alignParentRight 
layout_alignParentBottom 
layout_centerInParent 

в сочетании с вариантами рентабельности как

layout_marginLeft="10dp" 
layout_marginRight="10dp" 
layout_marginTop="10dp" 
layout_marginBottom="10dp" 
+0

А как насчет анимации? Я хочу, чтобы ImageView был на экране и появился с левого края, а затем исчез. Имеет ли смысл использовать поля для отображения/скрытия ImageView с помощью ObjectAnimator? – user2966445

Смежные вопросы