2016-08-13 55 views
0

我想学习Android中的属性动画,但我无法让我的代码工作。这个想法是让两个动画同时发生。我想要一个足球的图像同时旋转和翻译。不幸的是,该应用在我的模拟器中崩溃。 Android Studio抱怨说它不能在xml文件中执行“onclick-命令”。这里有什么问题?在android中使用属性动画

首先,XML的代码:

<?xml version="1.0" encoding="utf-8"?> 
<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="com.example.runeasheim.codeplayingpropertyanimationjava.MainActivity" 
android:background="#CCCCFF"> 


<ImageView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/imageView" 
    android:src="@drawable/footballround" 
    android:layout_centerVertical="true" 
    android:layout_centerHorizontal="true" /> 

<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="Animation" 
    android:id="@+id/btn1" 
    android:onClick="setAnimation" 
    android:layout_alignParentTop="true" 
    android:layout_centerHorizontal="true" /> 

这里的Java代码:

import android.animation.AnimatorSet; 
    import android.animation.ObjectAnimator; 
    import android.os.Bundle; 
    import android.support.v7.app.AppCompatActivity; 
    import android.view.View; 
    import android.widget.ImageView; 

    public class MainActivity extends AppCompatActivity { 
     private ImageView image; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_main); 
     image = (ImageView)findViewById(R.id.imageView); 

    } 

    public void setAnimation(View view){ 
     AnimatorSet rootSetAnim = new AnimatorSet(); 

     ObjectAnimator rotateBall = ObjectAnimator.ofFloat(image, "rotationY", 0.0f, 360.0f); 
     rotateBall.setDuration(2000); 

     AnimatorSet childSetAnim = new AnimatorSet(); 

     ObjectAnimator translateBall = ObjectAnimator.ofFloat(image, "translationX, 0f, 300f"); 
     translateBall.setDuration(2000); 

     rootSetAnim.play(rotateBall).before(childSetAnim); 
     childSetAnim.play(translateBall); 
     rootSetAnim.start(); 

    } 

} 

回答

1

变化从

ObjectAnimator translateBall = ObjectAnimator.ofFloat(image, "translationX, 0f, 300f"); 

ObjectAnimator translateBall = ObjectAnimator.ofFloat(image, "translationX", 0f, 300f); 
+0

谢谢!很明显,但很容易错过:-) – user820913