final TextView tvPushed = findViewById(R.id.tvPushed); // 获取需要上推的元素
final ValueAnimator anim = ValueAnimator.ofInt(tvPushed.getTop(), tvPushed.getTop() - 200); // 设置动画范围,从原位置上推200dp anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() { @Override public void onAnimationUpdate(ValueAnimator valueAnimator) { int val = (Integer) valueAnimator.getAnimatedValue(); ViewGroup.MarginLayoutParams layoutParams = (ViewGroup.MarginLayoutParams) tvPushed.getLayoutParams(); layoutParams.topMargin = val; tvPushed.setLayoutParams(layoutParams); } });
Button btnPush = findViewById(R.id.btnPush); // 获取触发上推动画的按钮 btnPush.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { anim.start(); // 开始动画 } });
这样,当点击按钮时,tvPushed元素就会向上推移200dp。