2013-07-04 200 views
0

我需要一个按钮,它将继续从左向右移动,每当我点击它时,它都会执行一些操作。我开始知道我需要使用Property Animation才能做到这一点。但我对此很失落。 这里是我的main.xml:移动按钮的属性动画android

<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文件制作动画使用属性动画从左向右?

+0

你见过动画视频http://www.youtube.com/watch?v=ihzZrS69i_s吗?它给出了很好的解释和使用属性动画的例子。 – sandrstar

+0

我的网速最慢。它至少需要15/16小时才能下载此视频。 :( – DexterousLisbeth

回答

1

我会做下列方式:

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); 
     } 
    } 
} 

为了更好地理解属性动画的,我会建议this session from Google I/O 2013,当然还有the tutorial here

+0

非常感谢...将它与ImageButton的工作吗? – DexterousLisbeth

+0

是的,我想是这样。物业动画是非常灵活的。 – sandrstar

+0

我编辑您的ImageButton的代码,我的ImageButton ID是ballbtn 私有静态类ButtonAnimatorHelper { \t最终的ImageButton b; \t公共ButtonAnimatorHelper(最终的ImageButton球){ \t b =球; \t} \t \t 公共无效setMarginLeft(最终诠释余量){ \t最终ViewGroup.MarginLayoutParams PARAMS =(ViewGroup.MarginLayou tParams)b.getLayoutParams(); \t params.leftMargin = margin; \t b.setLayoutParams(params); \t} \t} 这部分好吗?它不工作..如果我给你我的电子邮件地址,你会帮忙吗?请? – DexterousLisbeth

3

看看这个教程Android Animations

动画布局最简单的方法就是,做这样的事情:

your_layout.animate().translationX(your_layout.getWidth()).setDuration(500).setInterpolator(new AccelerateDecelerateInterpolator());