所以对于我正在进行的项目,我需要能够在运行时将小部件移动到屏幕上(就像反向瀑布)。有人可以展示如何移动一个按钮从屏幕的一个位置到更高的位置(使用绝对布局)在运行时的例子吗?
我知道它可能利用了
AbsoluteLayout.LayoutParams
或者params.addRule
。但请务必教我
:
_ __ _ __ _ __ _ __ _ __ _ __ _ __ (屏幕的顶部)
| [ 按钮]
| - - - - - -
| - - - - - -
| - - - - - -
| - - - - - -
| - - - - - -
| - - - - - -
| - - - - - -
|>
| [ 按钮]
_ __ _ __ _ __ _ __ _ __ _ __ _ __ (屏幕的底部)
From http://developerlife.com/tutorials/?p=343
这是一个从左滑动的动画(在视图的宽度上从右向左平移),命名为"/res/animm/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>
下面是另一个动画序列,它使用了上面的动画序列(@ animm/slide_right.xml -> "/res/animm/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/animm/some_file.xml"中。您可以在这里获得有关如何创建此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;
}