0:首先在res下面创建一个animator的文件夹。然后再这里面创建一个文件animator.xml
其实这里的valueType 也可以不写,因为如果写了写错了就不会执行了,
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="together"> <objectAnimator android:duration="5000" android:propertyName="rotation" android:valueType="floatType" android:valueFrom="0" android:valueTo="720" /> <objectAnimator android:duration="5000" android:propertyName="translationX" android:valueType="floatType" android:valueFrom="0" android:valueTo="300" ></objectAnimator> </set>
1:布局:
<?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:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".MainActivity"> <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@mipmap/composer_camera" android:id="@+id/composer_camera" android:onClick="animator"/> </RelativeLayout>
2:
package tech.androidstudio.animatordemo; import android.animation.Animator; import android.animation.AnimatorInflater; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void animator(View view) { ImageView imageView =(ImageView)findViewById(R.id.composer_camera); Animator animator_camera = AnimatorInflater.loadAnimator(this,R.animator.animator); animator_camera.setTarget(imageView); animator_camera.start(); Toast.makeText(this,"clicked",Toast.LENGTH_LONG).show(); } }
4: 如果要实现回收的效果
首先在animator 里面创建回收的xml 文件
<?xml version="1.0" encoding="utf-8"?> <set xmlns:android="http://schemas.android.com/apk/res/android" android:ordering="together"> <objectAnimator android:duration="5000" android:propertyName="rotation" android:valueType="floatType" android:valueFrom="0" android:valueTo="720" /> <objectAnimator android:duration="5000" android:propertyName="translationX" android:valueType="floatType" android:valueFrom="300" android:valueTo="0" ></objectAnimator> </set>
然后在MainActivity 里面添加一个全局变量mOut来判断是否出去了还是回到了原地。
package tech.androidstudio.animatordemo; import android.animation.Animator; import android.animation.AnimatorInflater; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.ImageView; import android.widget.Toast; public class MainActivity extends AppCompatActivity { private static boolean mOut=false; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } public void animator(View view) { ImageView imageView =(ImageView)findViewById(R.id.composer_camera); Animator animator_camera =null; if(mOut==false) { animator_camera= AnimatorInflater.loadAnimator(this, R.animator.animator); mOut=true; }else{ animator_camera = AnimatorInflater.loadAnimator(this, R.animator.back); mOut=false; } animator_camera.setTarget(imageView); animator_camera.start(); Toast.makeText(this,"clicked",Toast.LENGTH_LONG).show(); } }