Android绝对布局/参数(运行时移动小部件)

时间:2011-04-21 05:08:12

标签: android runtime position absolutelayout layoutparams

因此,对于我正在进行的项目,我需要能够在运行时将屏幕小部件移动到屏幕上(如反向瀑布)。有人可以在运行期间显示如何将一个按钮从一个屏幕位置移动到更高位置(使用绝对布局)的示例吗?

我知道它可能会使用

 AbsoluteLayout.LayoutParams
希望

params.addRule。但请注意教我

例如:
_ __ _ __ _ __ _ __ _ __ _ __ _ __ (屏幕顶部)
                                       | [按钮]
                                       | -
                                       | -
                                       | -
                                       | -
                                       | -
                                       | -
                                       | -
                                       | >
                                       | [按钮]
_ __ _ __ _ __ _ __ _ __ _ __ _ __ (屏幕下方)

1 个答案:

答案 0 :(得分:2)

来自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 - &gt;“/ anres/anim/slide_right.xml”):

<?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创建序列并将它们放在Android项目资源的“/res/anim/some_file.xml”中。您可以在此处获取有关如何创建此XML文件的更多详细信息。

你也可以通过code ::

来做到这一点
  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;
}