及时更改按钮位置

时间:2015-11-04 15:41:43

标签: android

我试图在功能时间内改变按钮位置的Y位置 因此,例如,在时间0:Y轴上的按钮位置为0 在1秒时:Y轴上的按钮位置为2。

我可以使用margin_bottom或margin_top,但我不知道该怎么做。

Final chrono = (Chronometer) findViewByID(R.id.Chrono)
long timeElapsed = SystemClock.elapsedRealtime() - chrono.getBase();
float y = 1000*(float)timeElapsed;
button1.setY(y); 

我试过了,但它没有用。
如果您需要更多详细信息,请告诉我。

抱歉我的英语不好。

3 个答案:

答案 0 :(得分:1)

我建议使用Animator。这将是一个简单的Y轴动画

Final chrono = (Chronometer) findViewByID(R.id.Chrono)
ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(chrono ,
        "translationY", y);
objectAnimator.setDuration(700); //duration of the animation
objectAnimator.start();

这是一个很好的教程,可以帮助您入门

http://www.vogella.com/tutorials/AndroidAnimation/article.html#animations_animator

Android文档

http://developer.android.com/guide/topics/graphics/prop-animation.html

答案 1 :(得分:0)

我理解你。

setY()和setX()似乎什么都不做:(

取决于您的布局......

您应该修改LayoutParams,我不会删除任何内容,以便您可以查看整个过程。

RelativeLayout rl = new RelativeLayout(this);
Button b = new Button(this);
RelativeLayout.LayoutParams prms = new RelativeLayout.LayoutParams(Width,Heigh);
prms.setMargins(left,up,right,down);  //Here you set your X,Y at left,up
rl.addView(b,prms);

使用该布局,您只需更改按钮的layoutParams并将边距设置为您想要定位的位置。

当然,如果你想插值使用动画,这不会是平滑的。

对于动画使用TranslateAnimation类,可以根据视图的相对位置指定结束坐标(如+ =而不是a =)

希望这有帮助。

答案 2 :(得分:0)

你可能想要这样的东西:

    ObjectAnimator objectAnimator = ObjectAnimator.ofFloat(button1,
            "translationY", here put the value you want animated);
    objectAnimator.setDuration(700); //duration of the animation
    objectAnimator.start();
public static ObjectAnimator ofFloat (Object target, String propertyName, float... values)
     

在API级别11中添加   构造并返回一个在浮点值之间设置动画的ObjectAnimator。单个值意味着该值是动画的值。两个值表示起始值和结束值。两个以上的值意味着起始值,沿途的动画值以及结束值(这些值将在动画的持续时间内均匀分布)。

     

<强>参数

     

target要对其属性进行动画处理的对象。该对象应该有一个名为setName()的公共方法,其中name是propertyName参数的值。

     

propertyName动画属性的名称。

     

values动画随时间变化的一组值。

     

Returns   一个ObjectAnimator对象,设置为在给定值之间设置动画。

ObjectAnimator Documentation

相关问题