Android简单用属性动画实现两个控件重叠

来源:互联网 发布:云计算系统软件 编辑:程序博客网 时间:2024/05/29 05:03

1.描述:

简单的实现一个小动画,两个控件重叠。


2.思路:

获取两个控件之间的位置在X,Y轴方向的差值。

/** * 计算两个控件之间的距离 * @param fromView * @param toView */public void getLocation(TextView fromView,TextView toView){int [] toLocation = new int [2];int [] fromLocation = new int [2];fromView.getLocationInWindow(fromLocation);toView.getLocationInWindow(toLocation);transX = toLocation[0] - fromLocation[0];transY = toLocation[1] - fromLocation[1];}

3.移动一个控件到另一个控件上。

ValueAnimator animationX = ObjectAnimator.ofFloat(textView_animation, "translationX", 0f, transX).setDuration(1000);ValueAnimator animationY = ObjectAnimator.ofFloat(textView_animation, "translationY", 0f, transY).setDuration(1000);AnimatorSet bouncer = new AnimatorSet();bouncer.play(animationX).with(animationY);bouncer.start();textViewBottom.setAlpha(0.2f);


4.贴码

1)xml

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical">    <TextView        android:id="@+id/textView_animation"        android:layout_width="50dp"        android:layout_height="50dp"        android:background="@drawable/btn_radio_selected"/>   <TextView       android:id="@+id/textViewBottom"       android:layout_marginLeft="200dp"       android:layout_marginTop="400dp"       android:layout_width="50dp"       android:layout_height="50dp"       android:background="@drawable/btn_radio_normal"/></LinearLayout>
2)代码

public class AnimationTest extends Activity implements OnClickListener {private final static String TAG =  AnimationTest.class.getSimpleName();private TextView textView_animation,textViewBottom;float transX = 100f;float transY = 100f;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);requestWindowFeature(Window.FEATURE_NO_TITLE);setContentView(R.layout.test_animation);textView_animation = (TextView) findViewById(R.id.textView_animation);textViewBottom = (TextView) findViewById(R.id.textViewBottom);textView_animation.setOnClickListener(this);}@Overridepublic void onClick(View view) {int id = view.getId();if(id == R.id.textView_animation){getLocation(textView_animation ,textViewBottom);ValueAnimator animationX = ObjectAnimator.ofFloat(textView_animation, "translationX", 0f, transX).setDuration(1000);ValueAnimator animationY = ObjectAnimator.ofFloat(textView_animation, "translationY", 0f, transY).setDuration(1000);AnimatorSet bouncer = new AnimatorSet();bouncer.play(animationX).with(animationY);bouncer.start();textViewBottom.setAlpha(0.2f);}}/** * 计算两个控件之间的距离,注意不要在onCreate时计算 * @param fromView * @param toView */public void getLocation(TextView fromView,TextView toView){int [] toLocation = new int [2];int [] fromLocation = new int [2];fromView.getLocationInWindow(fromLocation);toView.getLocationInWindow(toLocation);transX = toLocation[0] - fromLocation[0];transY = toLocation[1] - fromLocation[1];}}




0 0