购物车动画(Android)

前言:当我们写商城类的项目的时候,一般都会有加入购物车的功能,加入购物车的时候会有一些抛物线动画,最近做到这个功能,借助别人的demo写了一个。

效果:

开发环境:AndroidStudio2.1.2+gradle-2.10

涉及知识:1.沉浸式状态栏,2.单位精度计算(价格),3.List之Iterator。

部分代码:

public class MainActivity extends AppCompatActivity implements FoodAdapter.FoodActionCallback {

    private ListView listView;
private TextView goods_all_pricetv;
private TextView good_numtv;
private List<FoodModel> list;
private List<FoodModel> selectList = new ArrayList<>();
private FoodAdapter adapter = null; @Override
protected void onCreate(@Nullable final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//沉浸式状态栏
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.KITKAT) {
//透明状态栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS);
//透明导航栏
getWindow().addFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_NAVIGATION);
}
listView = (ListView) findViewById(R.id.listView);
goods_all_pricetv = (TextView) findViewById(R.id.goods_all_pricetv);
good_numtv = (TextView) findViewById(R.id.good_numtv);
findViewById(R.id.goods_submit_tv).setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if (null != selectList && selectList.size() > 0) {
Toast.makeText(MainActivity.this, "你一共加入购物车" + good_numtv.getText() +
"份商品,总价格为:" + goods_all_pricetv.getText(), Toast.LENGTH_SHORT).show();
} else {
Toast.makeText(MainActivity.this, "你的购物车为空", Toast.LENGTH_SHORT).show();
} }
}); initData();
} private void initData() {
list = AppConfig.factoryFoods();
adapter = new FoodAdapter(this, list, this);
listView.setAdapter(adapter);
} //添加商品动画
@Override
public void addAction(View view, int item) {
ShoppingCartAnimationView shoppingCartAnimationView = new ShoppingCartAnimationView(this);
int position[] = new int[2];
view.getLocationInWindow(position);
shoppingCartAnimationView.setStartPosition(new Point(position[0], position[1]));
ViewGroup rootView = (ViewGroup) this.getWindow().getDecorView();
rootView.addView(shoppingCartAnimationView);
int endPosition[] = new int[2];
good_numtv.getLocationInWindow(endPosition);
shoppingCartAnimationView.setEndPosition(new Point(endPosition[0], endPosition[1]));
shoppingCartAnimationView.startBeizerAnimation();
FoodModel model = list.get(item);
model.setNum(model.getNum() + 1);
adapter.notifyDataSetChanged();
calculatePrice(); } //减少商品
@Override
public void reduceGood(int position) {
FoodModel model = list.get(position);
model.setNum(model.getNum() - 1);
adapter.notifyDataSetChanged();
calculatePrice();
} //购物车份数+总价格计算
private void calculatePrice() {
selectList.clear();
double price = 0;
int num = 0;
Iterator<FoodModel> iterator = list.iterator();
while (iterator.hasNext()) {
FoodModel model = iterator.next();
if (model.getNum() != 0) {
selectList.add(model);
price += model.getPrice() * model.getNum();
num += model.getNum();
}
}
goods_all_pricetv.setText("¥" + adapter.priceResult(price) + "元");
good_numtv.setText(num + "");
}
}

源码下载...

购物车动画(Android)的更多相关文章

  1. 【转】Android 实现蘑菇街购物车动画效果

    原文出处:http://blog.csdn.net/wangjinyu501/article/details/38400479 1.思路   目前想到两种方式实现这种效果,一是使用Tween动画,直截 ...

  2. Android 实现蘑菇街购物车动画效果

    版本号:1.0  日期:2014.8.6 版权:© 2014 kince 转载注明出处   使用过蘑菇街的用户基本上都知道有一个增加购物车的动画效果,此处不详细描写叙述想知道的能够去下载体验一下. 1 ...

  3. javascript仿天猫加入购物车动画效果

    javascript仿天猫加入购物车动画效果   注意:首先需要声明的是:代码原思路不是我写的,是在网上找的这种效果,自己使用代码封装了下而已:代码中都有注释,我们最主要的是理解抛物线的思路及在工作中 ...

  4. iOS 手机淘宝加入购物车动画分析

    1.最终效果 仿淘宝动画 2.核心代码 _cartAnimView=[[UIImageView alloc] initWithFrame:CGRectMake(_propView.frame.size ...

  5. iOS手机淘宝加入购物车动画分析

    本文转载至 http://www.jianshu.com/p/e77e3ce8ee24 1.最终效果 仿淘宝动画 2.核心代码 _cartAnimView=[[UIImageView alloc] i ...

  6. iOS 购物车动画

    代码地址如下:http://www.demodashi.com/demo/11155.html 先看看动画效果: 项目结构: 接下来开始具体实现过程: 一.先计算动画开始结束位置 方法:- (CGPo ...

  7. Android 曲线动画animation,类似加入购物车动画

    按照惯例先放效果图:图中小球做抛物线运动 资源图片 1.首先布局文件activity_main.xml,布局很简单,就一个测试按钮 <RelativeLayout xmlns:android=& ...

  8. 动画--android图片点击放大动画,并遮挡旁边的控件

    http://blog.csdn.net/s13488941815/article/details/40649823: 首先是点击放大可以使用android自带的缩放动画,因为要遮盖其他控件,就需要控 ...

  9. JQuery模拟实现天猫购物车动画效果

    测试程序源代码下载地址:源码 一.功能描述: 1.点击购买按钮,模拟抛物线将物品弹到购物车里: 2.购物车添加物品后,显示+1动画: 效果图如下: 实现如下: 1.导入jquery相关的包: < ...

随机推荐

  1. AC自动机模板题

    AC自动机学习博客 AC自动机理解要点: 1)fail指针指向的是每个节点,在字典树上和这个节点后缀相同的最长单词,每次都这样匹配,必定不会漏过答案. 2)字典树建立后,会在bfs求fail阶段把字典 ...

  2. js高级程序设计 笔记 --- DOM

    DOM是针对HTML和XML文档的一个API.DOM描绘了一个层次化的节点树,允许开发人员添加.移除和修改页面的某一部分. 1,节点层次 DOM可以将任何HTML或XML文档描绘成一个由多层节点构成的 ...

  3. SS7

    在PSTN中各个网络点通过数字信令网交换信息的过程及协议 呼叫流程 SS7 的消息是通过网络点之间的56/64Kbps 的双向通道传送的,这些通道就叫信令链路(signaling links). 信令 ...

  4. prim和kruskal算法

    //邻接矩阵 int n,G[MAXV][MAXN]; int d[MAXV];//表示到树的距离 bool vis[MAXV]={false}; int prim(){ fill(d,d+MAXV, ...

  5. 如何在vue中请求本地json文件

    1..修改webpack.base.conf.js 文件中添加'/static': resolve('static'),如下所示,此时存放于static的json文件就可以通过/static/xxx. ...

  6. Fiddler使用三(Fiddler内置命令)

    参考:http://blog.csdn.net/ohmygirl/article/details/17855031 一. Fiddler内置命令. 上一节使用Fiddler进行抓包分析中,介绍到,在w ...

  7. 【Lua】linux下lua+mod_lwt环境搭建

    Lua 是一个小巧的脚本语言.它具有轻量级.可扩展等优势.它可以作为一个强大.轻量的脚本语言,供任何需要的程序使用. LWT (Lua Web Tools) 可让你使用 Lua 开发 Web 应用,并 ...

  8. Django查询一个权限中包含哪些用户

    Django查询一个权限中包含哪些用户 Django的Permission对象中没有直接查询相关用户的信息,而都是通过User对象来查询某个用户有哪些权限,例如: user.objects.get(u ...

  9. 关于React Hooks,你不得不知的事

    React Hooks是React 16.8发布以来最吸引人的特性之一.在开始介绍React Hooks之前,让咱们先来理解一下什么是hooks.wikipedia是这样给hook下定义的: In c ...

  10. [转]Entity FrameWork利用Database.SqlQuery<T>执行存储过程并返回参数

    本文转自:http://www.cnblogs.com/xchit/p/3334782.html 目前,EF对存储过程的支持并不完善.存在以下问题:        EF不支持存储过程返回多表联合查询的 ...