Абсолютный макет / параметры Android (перемещение виджетов во время выполнения) - PullRequest
1 голос
/ 21 апреля 2011

Так что для проекта, над которым я работаю, мне нужно иметь возможность перемещать виджеты вверх по экрану во время выполнения (например, обратный водопад).Может ли кто-нибудь показать пример того, как переместить кнопку из одного положения экрана в более высокое положение (используя абсолютное расположение) во время выполнения?

Я знаю, что, вероятно, используются

 AbsoluteLayout.LayoutParams

или params.addRule, надеюсь.Но, пожалуйста, не забудьте научить меня

Например:
_ __ _ __ _ __ _ __ _ __ _ __ _ __ (верхняя часть экрана)
|[кнопка]
|-
|-
|-
|-
|-
|-
|-
|>
|[кнопка]
_ __ _ __ _ __ _ __ _ __ _ __ _ __ (в нижней части экрана)

1 Ответ

2 голосов
/ 21 апреля 2011

С http://developerlife.com/tutorials/?p=343

Вот анимация слайда слева (перевод справа налево по ширине вида) с именем «/res/anim/slide_right.xml книг:

<?xml version="1.0" encoding="utf-8"?>

<set xmlns:android="http://schemas.android.com/apk/res/android" android:interpolator="@android:anim/accelerate_interpolator">
    <translate android:fromXDelta="100%p" android:toXDelta="0" android:duration="150" />
</set>

Вот еще одна анимационная последовательность, которая использует приведенную выше (@ anim / slide_right.xml -> «/res/anim/slide_right.xmloted):

<?xml version="1.0" encoding="utf-8"?>

<layoutAnimation xmlns:android="http://schemas.android.com/apk/res/android"
        android:delay="10%"
        android:order="reverse"
        android:animation="@anim/slide_right" />

Так что вы можете создать своюпоследовательности в XML и поместите их в «/res/anim/some_file.xml» ресурсов вашего проекта Android.Вы можете получить более подробную информацию о том, как создать этот файл XML, здесь.

Вы также можете сделать это с помощью кода ::

  AnimationSet set = new AnimationSet(true);

  Animation animation = new AlphaAnimation(0.0f, 1.0f);
  animation.setDuration(100);
  set.addAnimation(animation);

  animation = new TranslateAnimation(
      Animation.RELATIVE_TO_SELF, 0.0f, Animation.RELATIVE_TO_SELF, 0.0f,
      Animation.RELATIVE_TO_SELF, -1.0f, Animation.RELATIVE_TO_SELF, 0.0f
  );
  animation.setDuration(500);
  set.addAnimation(animation);

  LayoutAnimationController controller =
      new LayoutAnimationController(set, 0.25f);
  button.setLayoutAnimation(controller);

, а затем:

public static Animation runSlideAnimationOn(Activity ctx, View target) {
  Animation animation = AnimationUtils.loadAnimation(ctx,
                                                     android.R.anim.slide_right);
  target.startAnimation(animation);
  return animation;
}
...