1. 使用控件的layout 方法。
可以改任意位置和大小,不受布局限制。 但是在使用 setText等方法之后,会导致 界面重新布局,控件会回到原来位置
- btnMove.layout(left, top, left + btnMove.wight, top+btnMove.height);
其中 80 和50两个数字表示控件的大小。
2. 使用控件的setLayoutParams 方法,改变布局参数。
很容易改大小,设置Height 和 Width 即可(控件的大小 wight 和 height)
改位置会受到布局限制。要改到任意位置的话,须将控件放置在 FrameLayout 中,并设置 android:layout_gravity="top"
- int left = btnMoveLayoutB.getLeft() + 50;
- int top = btnMoveLayoutB.getTop() + 120;
- FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)btnMoveLayoutB.getLayoutParams();
- params.setMargins(left, top, 3, 3);//改变位置
- btnMoveLayoutB.setLayoutParams(params);
3、translate移动动画
- <translate
- android:duration="1000"<span style="white-space:pre"> </span>//动画时间
- android:fromYDelta="0%"<span style="white-space:pre"> </span>//起始位置
- android:toYDelta="-100%"//结束位置
- >
- </translate>
”N”,则表示绝对坐标比例,即屏幕的坐标比例
”N%”,则表示相对自身的坐标比例。
”N%p”,则表示相对于父控件的坐标比例。
多个动画时使用Set 动画集合
android:startOffset="1000" 开始动画后延迟几秒运行动画
android:repeatCount:整数类型。指定动画的重复次数。设置为“-1”,说明要无限次重复,或指定一个正整数。如,设定为1,说明动画第一次运行之后,还要重复一次,因此动画要播放两次。默认值是0,意味着不重复。
android:repeatMode:正整数。指定在动画到达结尾时的行为方式。只有android:repeatCount被设置为正整数或“-1”时,这个属性才有效果。如果设置为“reverse”,那么每次重复时会逆向播放动画,如果设置为“repeat”,那么每次重复时,会从动画的开头来播放动画。
设置在set中不管用
- <set xmlns:android="http://schemas.android.com/apk/res/android" >
- <translate
- android:duration="1000"
- android:fromYDelta="0%"
- android:repeatCount="2"
- android:repeatMode="restart"
- android:toYDelta="-100%" >
- </translate>
- </set>
fillAfter是指动画结束是画面停留在最后一帧,设置在set中才管用
- <set xmlns:android="http://schemas.android.com/apk/res/android"
- android:fillAfter="true" >
- <translate
- android:duration="1000"
- android:fromYDelta="0%"
- android:toYDelta="-100%"
- >
- </translate>
- </set>
interpolator定义一个动画的变化率(the rate of change)。这使得基本的动画效果(alpha, scale, translate, rotate)得以加速,减速,重复等。http://blog.csdn.net/liuhe688/article/details/6660823中有详解
代码中使用 AnimationUtils.loadAnimation调用布局