我试图在功能时间内改变按钮位置的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);
我试过了,但它没有用。
如果您需要更多详细信息,请告诉我。
抱歉我的英语不好。
答案 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对象,设置为在给定值之间设置动画。