自定义组件——控件平滑移动的方法

来源:互联网 发布:win7重置网络设置命令 编辑:程序博客网 时间:2024/05/14 18:14

1. 使用控件的layout 方法。

             可以改任意位置和大小,不受布局限制。 但是在使用  setText等方法之后,会导致 界面重新布局,控件会回到原来位置

[java] view plaincopy
  1. btnMove.layout(left, top, left + btnMove.wight, top+btnMove.height);  

其中 80 和50两个数字表示控件的大小。


   2. 使用控件的setLayoutParams 方法,改变布局参数。

             很容易改大小,设置Height 和 Width 即可(控件的大小 wight 和 height)

             改位置会受到布局限制。要改到任意位置的话,须将控件放置在 FrameLayout 中,并设置 android:layout_gravity="top"

[java] view plaincopy
  1. int left = btnMoveLayoutB.getLeft() + 50;  
  2. int top = btnMoveLayoutB.getTop() + 120;  
  3.   
  4. FrameLayout.LayoutParams params = (FrameLayout.LayoutParams)btnMoveLayoutB.getLayoutParams();  
  5. params.setMargins(left, top, 33);//改变位置  
  6. btnMoveLayoutB.setLayoutParams(params);  

3、translate移动动画


[java]
 view plaincopy在CODE上查看代码片派生到我的代码片
  1.   
[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <translate  
  2.         android:duration="1000"<span style="white-space:pre">   </span>//动画时间  
  3.         android:fromYDelta="0%"<span style="white-space:pre">   </span>//起始位置  
  4.         android:toYDelta="-100%"//结束位置  
  5.          >  
  6.     </translate>  

”N”,则表示绝对坐标比例,即屏幕的坐标比例

”N%”,则表示相对自身的坐标比例。

”N%p”,则表示相对于父控件的坐标比例。

多个动画时使用Set 动画集合

android:startOffset="1000" 开始动画后延迟几秒运行动画

android:repeatCount:整数类型。指定动画的重复次数。设置为“-1”,说明要无限次重复,或指定一个正整数。如,设定为1,说明动画第一次运行之后,还要重复一次,因此动画要播放两次。默认值是0,意味着不重复。

android:repeatMode:正整数。指定在动画到达结尾时的行为方式。只有android:repeatCount被设置为正整数或“-1”时,这个属性才有效果。如果设置为“reverse”,那么每次重复时会逆向播放动画,如果设置为“repeat”,那么每次重复时,会从动画的开头来播放动画。

设置在set中不管用

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <set xmlns:android="http://schemas.android.com/apk/res/android" >  
  2.   
  3.     <translate  
  4.         android:duration="1000"  
  5.         android:fromYDelta="0%"  
  6.         android:repeatCount="2"  
  7.         android:repeatMode="restart"  
  8.         android:toYDelta="-100%" >  
  9.     </translate>  
  10.   
  11. </set>  


fillAfter是指动画结束是画面停留在最后一帧,设置在set中才管用

[java] view plaincopy在CODE上查看代码片派生到我的代码片
  1. <set xmlns:android="http://schemas.android.com/apk/res/android"  
  2.     android:fillAfter="true" >  
  3.   
  4.      <translate  
  5.         android:duration="1000"  
  6.         android:fromYDelta="0%"  
  7.         android:toYDelta="-100%"  
  8.          >  
  9.     </translate>  
  10.   
  11. </set>  

interpolator定义一个动画的变化率(the rate of change)。这使得基本的动画效果(alpha, scale, translate, rotate)得以加速,减速,重复等。http://blog.csdn.net/liuhe688/article/details/6660823中有详解

代码中使用 AnimationUtils.loadAnimation调用布局
0 0