700字范文,内容丰富有趣,生活中的好帮手!
700字范文 > android添加商品到购物车 Android使用动画动态添加商品进购物车

android添加商品到购物车 Android使用动画动态添加商品进购物车

时间:2021-02-17 15:02:04

相关推荐

android添加商品到购物车 Android使用动画动态添加商品进购物车

本文实例为大家分享了Android添加商品进购物车的具体代码,供大家参考,具体内容如下

1、首先展示下效果图

2、讲一下思路,小球由加号位置运动到购物车位置,首先得获得这两个点在整个屏幕中的坐标,然后分别计算这两个点的横纵坐标的差值,再通过TranslateAnimation这个类设置小球在X、Y方向上的偏移量,最后通过AnimationSet这个类将这两个动画放在一起执行。这是小球运动的动画,还有就是购物车变大缩小的动画。这个动画通过ObjectAnimator的ofFloat的方法设置缩放,要注意的是当小球落下的时候,购物车才开始动画,所以要设置一下setStartDelay这个方法。

3、具体的代码我就贴一下动画部分的代码,如果想要这个Demo看下我最后贴出的Github的地址

@Override

public void setAnim(View view) {

// TODO Auto-generated method stub

int[] start_location = new int[2];// 一个整型数组用来存储按钮在屏幕的X,Y坐标

view.getLocationInWindow(start_location);// 购买按钮在屏幕中的坐标

buyImg = new ImageView(this);// 动画的小圆圈

buyImg.setImageResource(R.drawable.sign);// 设置buyImg的图片

setAnim(buyImg, start_location);

}

/**

* hdh: 创建动画层

*

* @return

*/

private ViewGroup createAnimLayout() {

ViewGroup rootView = (ViewGroup) this.getWindow().getDecorView();// 获得Window界面的最顶层

LinearLayout animLayout = new LinearLayout(this);

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);

animLayout.setLayoutParams(lp);

//animLayout.setId();

animLayout.setBackgroundResource(android.R.color.transparent);

rootView.addView(animLayout);

return animLayout;

}

/**

* hdh:

*

* @param vp

* @param view

* @param location

* @return

*/

private View addViewToAnimLayout(final ViewGroup vp, final View view, int[] location) {

int x = location[0];

int y = location[1];

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT);

lp.leftMargin = x;

lp.topMargin = y;

view.setLayoutParams(lp);

return view;

}

/**

* hdh:动画

*

* @param v

* @param start_location

*/

private void setAnim(final View v, int[] start_location) {

anim_mask_layout = null;

anim_mask_layout = createAnimLayout();

anim_mask_layout.addView(v);

View view = addViewToAnimLayout(anim_mask_layout, v, start_location);

int[] end_location = new int[2];// 存储动画结束位置的X,Y坐标

text_chart_num.getLocationInWindow(end_location);// 将购物车的位置存储起来

// 计算位移

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 AccelerateInterpolator());

translateAnimationY.setRepeatCount(0);// 动画重复次数

translateAnimationY.setFillAfter(true);

AnimationSet set = new AnimationSet(false);

set.setFillAfter(false);

set.addAnimation(translateAnimationX);

set.addAnimation(translateAnimationY);

set.setDuration(1000);

view.startAnimation(set);

set.setAnimationListener(new Animation.AnimationListener() {

@Override

public void onAnimationStart(Animation animation) {

// TODO Auto-generated method stub

v.setVisibility(View.VISIBLE);

}

@Override

public void onAnimationRepeat(Animation animation) {

// TODO Auto-generated method stub

}

@Override

public void onAnimationEnd(Animation animation) {

// TODO Auto-generated method stub

v.setVisibility(View.GONE);

}

});

ObjectAnimator anim = ObjectAnimator//

.ofFloat(view, "scale", 1.0F, 1.5F, 1.0f)//

.setDuration(500);//

anim.setStartDelay(1000);

anim.start();

anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

float cVal = (Float) animation.getAnimatedValue();

image_chart.setScaleX(cVal);

image_chart.setScaleY(cVal);

text_chart_num.setScaleX(cVal);

text_chart_num.setScaleY(cVal);

}

});

}

4、GitHub地址:点击打开链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。