相信的勇气 2015-02-05 06:25 采纳率: 0%
浏览 1721

如何通过位移动画移动一个控件,最后能不闪烁

布局文件代码如下:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="match_parent" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity">
    <Button
        android:id="@+id/btm_Test"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_alignParentTop="true"
        android:text="测试"/>
</RelativeLayout>

Java代码如下

 public class MainActivity extends Activity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        Button btn_Test = (Button)findViewById(R.id.btm_Test);

        btn_Test.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

                TranslateAnimation animation = new TranslateAnimation(0, 0, 0, 200);
                animation.setInterpolator(new AccelerateInterpolator());
                animation.setDuration(1000);
                final Button ll = (Button)v;

                animation.setAnimationListener(new Animation.AnimationListener() {
                    public void onAnimationStart(Animation animation) {}

                    public void onAnimationEnd(Animation animation) {

                        RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) ll.getLayoutParams();
                        params.topMargin = 200;
                        ll.setLayoutParams(params);
                    }
                    public void onAnimationRepeat(Animation animation) {}
                });
                ll.startAnimation(animation);
            }
        });
    }
}
  • 写回答

3条回答 默认 最新

  • super小靖 2015-02-06 10:36
    关注

    animation.setDuration(1000);后面加一个animation.setFillAfter(true);试试??闪烁的原因应该是你的动画结束了,然后回到了原来的位置,然后你又改变了控件的位置,这样一来一回的闪烁吧,setFillAfter(true)表示动画结束之后留在最后的位置,你试试看,我猜的,嘿嘿

    评论

报告相同问题?

悬赏问题

  • ¥20 校园二手交易小程序搭建
  • ¥15 请问在ubuntu用conda创建环境报错怎么能解决
  • ¥15 STM32CubeMX/proteus按键控制指示灯颜色切换
  • ¥20 python,计算区位熵和扩张指数
  • ¥15 Python环境配置
  • ¥15 大四学生的困惑,有偿提问!
  • ¥15 解决页面无法编入索引:被“noindex”标签排除的问题?
  • ¥15 arduino测量电阻
  • ¥15 快手uid转快手号谁能解决 需要开发
  • ¥15 iis部署Django时css不生效,来个真人,ai不好使