Android购物车添加商品动画抛物线ParabolaAnimation
2016-08-23 23:11
471 查看
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); } }); } }
相关文章推荐
- 发布版本的android应用,百度地图不显示问题
- Android调用相机
- Android适配器之定义PagerAdapter万能适配器
- 谷歌推荐的图片加载库Glide(谷歌亲儿子..)有图有真相
- Shape,Selector
- Android项目重构之路:实现篇
- Android中使用SDcard进行文件的读取
- android的View的大小写字母问题
- android内存优化之图片压缩和缓存
- Android系统ROM定制(待完善)
- Android02--Android之Shape的使用
- Android-自己动手写ButterKnife与原理解析
- Android获取设备隐私 忽略6.0权限管理
- Android自定义控件
- Android存储访问及目录
- android 6.0权限全面详细分析和解决方案
- TextView SpannableString方法 ,EditText 及监听事件,ImageView
- Android--数据存储(数据持久化)
- Android事件处理
- Android自定义ViewGroup(一)之CustomGridLayout