您的位置:首页 > 移动开发 > Android开发

Android购物车添加商品动画抛物线ParabolaAnimation

2016-08-23 23:11 411 查看
public class ParabolaAnimation{

pirvate View mAnimationView;
private LinearLayout mAnimationLayout;
private ViewGroup mRootView;

/**
* 抛物线
* @param view
* @param context
* @param start_location
* @param end_location
*/
public  void parabola( View view,  Context context, int[] start_location,int[] end_location) {
mAnimationView = view;
mRootView = (ViewGroup) ((Activity)context).getWindow().getDecorView();
mAnimationLayout = new LinearLayout(context);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
mAnimationLayout.setLayoutParams(lp);
mAnimationLayout.setId(Integer.MAX_VALUE);
mAnimationLayout.setBackgroundResource(android.R.color.transparent);
mRootView.addView(mAnimationLayout);

mAnimationLayout.addView(view);//把动画小球添加到动画层

int x = start_location[0];
int y = start_location[1];
LinearLayout.LayoutParams viewLp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.WRAP_CONTENT,
LinearLayout.LayoutParams.WRAP_CONTENT);
viewLp.leftMargin = x;
viewLp.topMargin = y;
view.setLayoutParams(viewLp);

// 计算位移
int endX = end_location[0] - start_location[0];// 动画位移的X坐标
int endY = end_location[1] - start_location[1];// 动画位移的y坐标
TranslateAnimation translateAnimationX = new TranslateAnimation(0,
endX, 0, 0);
translateAnimationX.setInterpolator(new LinearInterpolator());
translateAnimationX.setRepeatCount(0);// 动画重复执行的次数
translateAnimationX.setFillAfter(true);

TranslateAnimation translateAnimationY = new TranslateAnimation(0, 0,
0, endY);
translateAnimationY.setInterpolator(new BeeAnticipateInterpolator(0.8f));
translateAnimationY.setRepeatCount(0);// 动画重复执行的次数
translateAnimationX.setFillAfter(true);

AnimationSet set = new AnimationSet(false);
set.setFillAfter(false);
set.addAnimation(translateAnimationY);
set.addAnimation(translateAnimationX);
set.setDuration(700);// 动画的执行时间
view.startAnimation(set);
// 动画监听事件
set.setAnimationListener(new Animation.AnimationListener() {
// 动画的开始
@Override
public void onAnimationStart(Animation animation) {
mAnimationView.setVisibility(View.VISIBLE);
}

@Override
public void onAnimationRepeat(Animation animation) {
// TODO Auto-generated method stub
}

// 动画的结束
@Override
public void onAnimationEnd(Animation animation) {
mAnimationView.setVisibility(View.GONE);
mAnimationLayout.setVisibility(View.GONE);
//mRootView.removeView(mAnimationLayout);

}
});

}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: