Java 移动按钮的属性动画
我需要一个按钮,将继续从左向右移动,每当我点击它,它会做一些事情。我知道我需要使用属性动画来实现这一点。但是我对这件事很迷茫。 以下是我的main.xml:Java 移动按钮的属性动画,java,android,animation,Java,Android,Animation,我需要一个按钮,将继续从左向右移动,每当我点击它,它会做一些事情。我知道我需要使用属性动画来实现这一点。但是我对这件事很迷茫。 以下是我的main.xml: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:la
<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:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
<Button
android:id="@+id/btn"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentLeft="true"
android:layout_alignParentTop="true"
android:layout_marginLeft="39dp"
android:layout_marginTop="106dp"
android:text="Button" />
如何编辑.java文件以使用属性动画从左到右设置动画?查看本教程 设置布局动画的最简单方法是执行以下操作:
your_layout.animate().translationX(your_layout.getWidth()).setDuration(500).setInterpolator(new AccelerateDecelerateInterpolator());
看看这个教程 设置布局动画的最简单方法是执行以下操作:
your_layout.animate().translationX(your_layout.getWidth()).setDuration(500).setInterpolator(new AccelerateDecelerateInterpolator());
我会这样做:
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//new GetUrl().execute(20);
// Test XML Files
//testXMLFiles();
final Button speakButton = (Button)findViewById(R.id.play);
speakButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
// TODO: DO something!
}
});
final ObjectAnimator horizontalAnimator = ObjectAnimator.ofInt(new ButtonAnimatorHelper(speakButton), "marginLeft", 0, 600);
horizontalAnimator.setDuration(2000);
horizontalAnimator.setRepeatCount(ValueAnimator.INFINITE);
horizontalAnimator.setRepeatMode(ValueAnimator.REVERSE);
horizontalAnimator.setInterpolator(new LinearInterpolator());
horizontalAnimator.start();
}
/**
* Helper class for button animation
*/
private static class ButtonAnimatorHelper {
final Button mButton;
/**
* Default constructor
* @param speakButton
*/
public ButtonAnimatorHelper(final Button button) {
mButton = button;
}
public void setMarginLeft(final int margin) {
final ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mButton.getLayoutParams();
params.leftMargin = margin;
mButton.setLayoutParams(params);
}
}
}
为了更好地理解属性动画,我建议,当然,我会按照以下方式进行操作:
public class MyActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
//new GetUrl().execute(20);
// Test XML Files
//testXMLFiles();
final Button speakButton = (Button)findViewById(R.id.play);
speakButton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(final View v) {
// TODO: DO something!
}
});
final ObjectAnimator horizontalAnimator = ObjectAnimator.ofInt(new ButtonAnimatorHelper(speakButton), "marginLeft", 0, 600);
horizontalAnimator.setDuration(2000);
horizontalAnimator.setRepeatCount(ValueAnimator.INFINITE);
horizontalAnimator.setRepeatMode(ValueAnimator.REVERSE);
horizontalAnimator.setInterpolator(new LinearInterpolator());
horizontalAnimator.start();
}
/**
* Helper class for button animation
*/
private static class ButtonAnimatorHelper {
final Button mButton;
/**
* Default constructor
* @param speakButton
*/
public ButtonAnimatorHelper(final Button button) {
mButton = button;
}
public void setMarginLeft(final int margin) {
final ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) mButton.getLayoutParams();
params.leftMargin = margin;
mButton.setLayoutParams(params);
}
}
}
为了更好地理解属性动画,我建议,当然还有,。您看过关于视图动画的课程吗?它对属性动画的使用给出了很好的解释和示例。我的网速是最慢的。下载此视频至少需要15/16小时:(你看过这个关于视图动画的课程吗?它对属性动画的使用给出了很好的解释和示例。我的互联网速度最慢。下载这个视频至少需要15/16小时。)(是的,我想是的。属性动画非常灵活。我编辑了ImageButton的代码,我的ImageButton id是ballbtn私有静态类ButtonAnimatorHelper{final ImageButton b;public ButtonAnimatorHelper(final ImageButton ball){b=ball;}public void setMarginLeft(final int margin){final ViewGroup.MarginLayoutParams params=(ViewGroup.MarginLayoutParams)b.getLayoutParams();params.leftMargin=margin;b.setLayoutParams(params);}这部分可以吗?它不起作用。如果我给你我的电子邮件地址,你能帮我吗?可以,我想可以。属性动画非常灵活。我编辑了你的ImageButton代码,我的ImageButton id是ballbtn私有静态类ButtonAnimatorHelper{final ImageButton b;public ButtonAnimatorHelper(final ImageButton ball){b=ball;}公共void setMarginLeft(final int margin){final ViewGroup.MarginLayoutParams params=(ViewGroup.MarginLayoutParams)b.getLayoutParams();params.leftMargin=margin;b.setLayoutParams(params);}这部分可以吗?它不起作用。如果我给你我的电子邮件地址,你能帮忙吗?请?