2015-10-29 2 views
0

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

+0

Облака ImageViews? или часть фонового изображения? –

+0

@UdiIdan часть изображения image –

+0

, если ее часть 'ImageView' затем создает пользовательский класс« Drawable »и анимирует ваши облака – pskink

ответ

0

A <FrameLayout ...> (в макете xml) рисует своих детей один поверх другого.

Так

<FrameLayout 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" > 
    < the background view /> 
    < the informative view /> 
</FrameLayout> 

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

UPDATE (перемещение: как и любой другой точки зрения)

Чтобы сделать вид движения, вы можете использовать анимацию или изменить положение вида программно. Я сделал последнее в ответ на прикосновение, вы, вероятно, выберете первое. Существует много about анимаций на SO. Я попытался бы сделать фоновое изображение в 2 раза шире экрана, установить левую координату на отрицательное значение и изменить его значение до 0 (изображение будет двигаться вправо, по крайней мере, так было в iOS).

Примечание 1. Для позиционирования вида внутри LinearLayout или RelativeLayout вы можете использовать вспомогательные прозрачные виды.

Например, расположение ниже разделяет экран на 5 областей:

11111111111 
222  333 
44444444444 

и помещает изображение в углу справа от «2» и выше «4»:

<RelativeLayout 
     android:id="@+id/sight" 
     android:layout_width="fill_parent" 
     android:layout_height="fill_parent" 
     > 
     <View 
      android:id="@+id/sightq1" 
      android:layout_width="fill_parent" 
      android:layout_height="80px" 
      android:layout_alignParentTop="true" 
      /> 
     <View 
      android:id="@+id/sightq4" 
      android:layout_width="fill_parent" 
      android:layout_height="80px" 
      android:layout_alignParentBottom="true" 
      /> 
     <View 
      android:id="@+id/sightq2" 
      android:layout_width="80px" 
      android:layout_height="fill_parent" 
      android:layout_alignParentLeft="true" 
      android:layout_above="@id/sightq4" 
      android:layout_below="@id/sightq1" 
      /> 
     <View 
      android:id="@+id/sightq3" 
      android:layout_width="80px" 
      android:layout_height="fill_parent" 
      android:layout_alignParentRight="true" 
      android:layout_above="@id/sightq4" 
      android:layout_below="@id/sightq1" 
      /> 
     <!-- example: --> 
     <ImageView 
      android:id="@+id/..." 
      android:layout_toRightOf="@id/sightq2" 
      android:layout_alignTop="@id/sightq4" 
      android:src="@drawable/..." 
      android:layout_width="wrap_content" 
      android:layout_height="wrap_content" 
      /> 
    </RelativeLayout> 

Сказав это, я должен отметить, что, вероятно, вам не понадобятся дополнительные представления, просто сделайте позиционирование.

Примечание 2. Чтобы получить фактический вид ширина/высота зрения, вы должны использовать ViewTreeObserver.OnGlobalLayoutListener и вызвать v.getMeasuredWidth() и v.getMeasuredHeight() от onGlobalLayout(). Эти ширины и высоты известны только после того, как происходит разметка. v.getViewTreeObserver().addOnGlobalLayoutListener(mLayoutListener); зарегистрировать слушателя.

+0

Спасибо за этот пример. –

+0

Я пробовал, но как я могу сделать информативный просмотр двигаться? –

+0

Вы хотите переместить информативный вид или фоновый? Разница в том, что вы, вероятно, можете обрезать фон, но должны держать информацию полностью видимой. В зависимости от этого вы выбираете тот или иной метод. См. Обновления. – 18446744073709551615

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