详解Android实现购物车页面及购物车效果(点击动画)

本文介绍了Android实现购物车页面及购物车效果(点击动画),分享给大家,具体如下:

效果图如下:

思路:

(1)思考每个条目中的数字的更新原理。

(2)购物车的动画效果。

(3)购物清单怎么显示(这个我暂时没有写,如果需要的话,可以在我的简书下给我留言)。

1.因为进入页面,所有的商品个数都显示为零,所以我用 ArrayList<HashMap<String, Object>> data,把商品集合都附上零:

    //下面把data都添加0,为了刚开始显示时,显示的是0
    for (int i = 0; i < list.size(); i++) {
      HashMap<String, Object> myhashmap = new HashMap<String, Object>();
      myhashmap.put("number", "" + 0);
      data.add(myhashmap);
    }

然后把data传入Adapter:

adapter = new MyAdapter(data);

当我们对商品进行增减时,我们可以通过hashmap来更改,如下是增加商品的部分代码:

  b = Integer.parseInt((String) data.get(position).get(
              "number"));
          data.get(position).put("number", "" + (b + 1));

2.购物车动画效果:

首先获取点击时的XY坐标,并且设置动画图片:

 // ball是个imageview
 startLocation = new int[2];// 一个整型数组,用来存储按钮的在屏幕的X、Y坐标
          view.getLocationInWindow(startLocation);// 这是获取购买按钮的在屏幕的X、Y坐标(这也是动画开始的坐标)
          ball = new ImageView(MainActivity.this);
          ball.setImageResource(R.mipmap.sign);// 设置动画的图片我的是一个小球(R.mipmap.sign)

然后是开始执行动画:

   private void setAnim(final View v, int[] startLocation) {
    anim_mask_layout = null;
    anim_mask_layout = createAnimLayout(); //创建动画层
    anim_mask_layout.addView(v);//把动画小球添加到动画层
    final View view = addViewToAnimLayout(anim_mask_layout, v,
        startLocation);
    int[] endLocation = new int[2];// 存储动画结束位置的X、Y坐标
    re_zhongcai_tanchu.getLocationInWindow(endLocation);// re_zhongcai_tanchu是那个抛物线最后掉落的控件

    // 计算位移
    int endX = 0 - startLocation[0] + 40;// 动画位移的X坐标
    int endY = endLocation[1] - startLocation[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);// 动画重复执行的次数
    translateAnimationX.setFillAfter(true);

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

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

      // 动画的结束
      @Override
      public void onAnimationEnd(Animation animation) {
        v.setVisibility(View.GONE);
        set.cancel();
        animation.cancel();
      }
    });

  }

需要注意的是,当动画结束必须关闭动画:

  v.setVisibility(View.GONE);
        set.cancel();
        animation.cancel();

购物车的弹出清单功能,我没有写,需要的话,可以去我的简书留言.

github地址:https://github.com/javaexception/ShoppingCart

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

时间: 2017-08-21

Android仿饿了么加入购物车旋转控件自带闪转腾挪动画的按钮效果(实例详解)

概述 在上文,酷炫Path动画已经预告了,今天给大家带来的是利用 纯自定义View,实现的仿饿了么加入购物车控件,自带闪转腾挪动画的按钮. 效果图如下: 图1 项目中使用的效果,考虑到了View的回收复用, 并且可以看到在RecyclerView中使用,切换LayoutManager也是没有问题的, 图2 Demo效果,测试各种属性值 注意,本控件非继承自ViewGroup,而是纯自定义View实现.理由如下: 1 减少布局层级,从而提高性能 2 文字和图形纯draw,用到什么draw什么,没有

Android把商品添加到购物车的动画效果(贝塞尔曲线)

当我们写商城类的项目的时候,一般都会有加入购物车的功能,加入购物车的时候会有一些抛物线动画,具体代码如下: 实现效果如图: 思路: 确定动画的起终点 在起终点之间使用二次贝塞尔曲线填充起终点之间的点的轨迹 设置属性动画,ValueAnimator插值器,获取中间点的坐标 将执行动画的控件的x.y坐标设为上面得到的中间点坐标 开启属性动画 当动画结束时的操作 难点: PathMeasure的使用 - getLength() - boolean getPosTan(float distance, f

Android实现购物车添加物品的动画效果

前言:当我们写商城类的项目的时候,一般都会有加入购物车的功能,加入购物车的时候会有一些抛物线动画,最近做到这个功能,借助别人的demo写了一个. 效果: 开发环境:AndroidStudio2.1.2+gradle-2.10 涉及知识:1.沉浸式状态栏,2.单位精度计算(价格),3.List之Iterator. 部分代码: public class MainActivity extends AppCompatActivity implements FoodAdapter.FoodActionCa

Android实现购物车添加商品动画

本文实例为大家分享了Android实现购物车添加商品动画的具体代码,供大家参考,具体内容如下 实现需求: 在商品列表页面,从列表Item 添加商品的时候,需要一个动画,仿佛是是往购物车里添加商品. 实现思路: 获取起始点与终点的坐标,利用PathMeasure 绘制贝塞尔曲线: 为点击的Item 商品View 设置属性动画: 监听属性动画的update,改变View 的坐标: 实现效果: 实现中会用到 PathMeasure 类: 我们主要使用它两个方法: 1.获取长度: /** //获取弧线的

Android开发中MJRefresh自定义刷新动画效果

[一]常见用法 最原始的用法,耦合度低,但是不能统一管理.我们需要在每一个控制器都写以下代码,很繁琐,以后项目修改起来更繁琐,得一个控制器一个控制器的去定位.修改. 1.1 使用默认刷新(耦合度底,但是想统一修改起来特别麻烦) self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ //在这里执行刷新操作 }]; self.tableView.mj_header = [MJRefreshNorm

Android仿支付宝的头部伸缩动画效果

Android5.0推出的MaterialDesign库包含了处理头部工具栏的多个控件,不但允许自定义顶部导航栏,而且导航栏高度是可以伸缩的.如此一来,一方面导航栏能够放得下更多控件,另一方面在用户想看具体内容时也能腾出更多的屏幕空间. 这么说可能比较抽象,那就先来看看两张导航栏的效果图,第一张是导航栏完全展开时的界面,此时页面头部的导航栏占据了较大部分的高度: 第二张是导航栏完全收缩时的界面,此时头部导航栏只剩矮矮的一个长条. 看起来很眼熟是不是,上面的截图正是仿支付宝首页的头部效果.如果你熟

Android实现左右摆动的球体动画效果

首先,看一下效果 可能各位在别处看到过类似的东西,我在微信的文章末尾看到有个玩意,感觉有意思,就用代码实现一下.这篇文章主要把握写代码的思路展示一下. 看到上图,我想各位能想到最简单的实现方案就是用动画,切很多图出来,然后就可以轻松实现了.为了不让自己再舒适区里呆的太安逸,就弄点麻烦的:通过计算来实现.文章的末尾会将全部代码贴出,复制可以直接运行. 需要回忆的知识 重力势能 E = mgh 动能 E = ½mv² 在理想状态下,动能和重力式能可以相互转换,且能量守恒 如果不想太注意细节,以上的知

Android编程实现ImageView图片抛物线动画效果的方法

本文实例讲述了Android编程实现ImageView图片抛物线动画效果的方法.分享给大家供大家参考,具体如下: 想实现抛物线动画,必须知道抛物线的方程,这时候数学其作用了,假如有如图的抛物线: 按照抛物线的方程特别,知道任何的三点可以确定一条抛物线,由已知抛物线的标注 方程为 y = ax² + bx + c:假设A1坐标为(0,0),A2坐标为(300,0),A3坐标为(150,300):联合解方程得知该抛物线的方程为 y = -1/75 x² + 4x:由此方程,我们可以确定抛物线x和y的

Android 自定义view实现水波纹动画效果

在实际的开发中,很多时候还会遇到相对比较复杂的需求,比如产品妹纸或UI妹纸在哪看了个让人兴奋的效果,兴致高昂的来找你,看了之后目的很明确,当然就是希望你能给她: 在这样的关键时候,身子板就一定得硬了,可千万别说不行,爷们儿怎么能说不行呢: 好了,为了让大家都能给妹纸们想要的,后面会逐渐分享一些比较比较不错的效果,目的只有一个,通过自定义view实现我们所能实现的动效: 今天主要分享水波纹效果: 1.标准正余弦水波纹: 2.非标准圆形液柱水波纹: 虽说都是水波纹,但两者在实现上差异是比较大的,一个

Android编程之界面跳动提示动画效果实现方法

本文实例讲述了Android编程之界面跳动提示动画效果实现方法.分享给大家供大家参考,具体如下: 上一个效果图: 先上布局: <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" a

Android仿硬币转动微信红包动画效果

项目需要研究了一下微信红包动画,即硬币转动的效果,原理其实就是三张不同角度的图片利用AnimationDrawable帧动画进行播放,在参考了案例之后,给自己记录一下完成的过程. 1,在XML文件中定义动画: 步骤如下: ①新建 Android 项目 ②在drawable目录中新建一个anim.xml(注意文件名小写) <?xml version="1.0" encoding="utf-8"?> <animation-list xmlns:andr

android实现直播点赞飘心动画效果

前段时间在写直播的时候,需要观众在看直播的时候点赞的效果,在此参照了腾讯大神写的点赞(飘心动画效果).下面是效果图: 1.自定义飘心动画的属性 在attrs.xml 中增加自定义的属性 <!-- 飘心动画自定义的属性 --> <declare-styleable name="HeartLayout"> <attr name="initX" format="dimension"/> <attr name=&