购物车动画(Android)
购物车动画(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)的更多相关文章
- 【转】Android 实现蘑菇街购物车动画效果
原文出处:http://blog.csdn.net/wangjinyu501/article/details/38400479 1.思路 目前想到两种方式实现这种效果,一是使用Tween动画,直截 ...
- Android 实现蘑菇街购物车动画效果
版本号:1.0 日期:2014.8.6 版权:© 2014 kince 转载注明出处 使用过蘑菇街的用户基本上都知道有一个增加购物车的动画效果,此处不详细描写叙述想知道的能够去下载体验一下. 1 ...
- javascript仿天猫加入购物车动画效果
javascript仿天猫加入购物车动画效果 注意:首先需要声明的是:代码原思路不是我写的,是在网上找的这种效果,自己使用代码封装了下而已:代码中都有注释,我们最主要的是理解抛物线的思路及在工作中 ...
- iOS 手机淘宝加入购物车动画分析
1.最终效果 仿淘宝动画 2.核心代码 _cartAnimView=[[UIImageView alloc] initWithFrame:CGRectMake(_propView.frame.size ...
- iOS手机淘宝加入购物车动画分析
本文转载至 http://www.jianshu.com/p/e77e3ce8ee24 1.最终效果 仿淘宝动画 2.核心代码 _cartAnimView=[[UIImageView alloc] i ...
- iOS 购物车动画
代码地址如下:http://www.demodashi.com/demo/11155.html 先看看动画效果: 项目结构: 接下来开始具体实现过程: 一.先计算动画开始结束位置 方法:- (CGPo ...
- Android 曲线动画animation,类似加入购物车动画
按照惯例先放效果图:图中小球做抛物线运动 资源图片 1.首先布局文件activity_main.xml,布局很简单,就一个测试按钮 <RelativeLayout xmlns:android=& ...
- 动画--android图片点击放大动画,并遮挡旁边的控件
http://blog.csdn.net/s13488941815/article/details/40649823: 首先是点击放大可以使用android自带的缩放动画,因为要遮盖其他控件,就需要控 ...
- JQuery模拟实现天猫购物车动画效果
测试程序源代码下载地址:源码 一.功能描述: 1.点击购买按钮,模拟抛物线将物品弹到购物车里: 2.购物车添加物品后,显示+1动画: 效果图如下: 实现如下: 1.导入jquery相关的包: < ...
随机推荐
- bzoj 4032(A的一个最短的子串,它不是B的子串 || A的一个最短的子串,它不是B的子序列 || A的一个最短的子序列,它不是B的子串||A的一个最短的子序列,它不是B的子序列)
在虐各种最长公共子串.子序列的题虐的不耐烦了之后,你决定反其道而行之. 一个串的“子串”指的是它的连续的一段,例如bcd是abcdef的子串,但bde不是. 一个串的“子序列”指的是它的可以不连续的一 ...
- 命令提示符下的WQL
WQL就是英文WMI Query Language的缩写,就是说wmic这个命令支持简单的一些SQL查询,我们以实例来讲解他的部分用法,这个命令过于强大,因此以下只是该命令的冰山一角. 列出本地连接的 ...
- Oracle WebLogic Server 12c 新特性
美国时间2011年 12月9日,Oracle公司正式发布WebLogic 12c版本,c是cloud的缩写.截止当前(2013年8月)最新版本为Oracle WebLogic Server 12c ( ...
- 项目版本不同导致Eclipse报错问题——关于在JDK1.7环境中,运行JDK1.8环境下编写的项目
本人电脑环境配置的是JDK1.7,朋友的是JDK1.8 ,我把她编的java文件导入到我电脑里的Eclipse(LUNA版本)的时候,项目出现一个红色叹号,当然运行是肯定出错了.SO我就开始了解决之旅 ...
- 使用docker部署STF服务(CentOS环境)
一.安装docker环境 更新软件 sudo yum update 执行安装 sudo yum install docker 查看docker镜像 sudo docker images 二.拉取相关镜 ...
- CAN2.0A帧格式 与 LIN帧格式 简单说明
一.标准的2.0A帧格式 各字段解释:SOF帧开始标志比特是一个显性比特(0),由一个或多个准备发送帧的节点传输.SOF标志着帧的开始(或仲裁发送帧的权利),并用于“硬同步”总线上的设备.只有在开始发 ...
- 迁移-Mongodb时间类数据比较的坑
背景: 拦截件监控时,对于签收的数据需要比较签收时间和实际同步数据的时间来判断 同步时间是在签收前还是签收后.在比较时,用到同步时间syncTime和signTime, signTime从Q9查单获 ...
- Html checkbox全选
html中全选 <table class="data-table td-center"> <tr> <td><input type=&qu ...
- Shell输出颜色设置
echo的三个参数 -E 关闭转义(默认) -e 识别转义 -n 不自动输出换行符 Shell识别颜色参数 \033[cor_id1;cor_id2;...]m \033和\e是相同 ...
- 算法导论学习笔记1---排序算法(平台:gcc 4.6.7)
平台:Ubuntu 12.04/gcc 4.6.7 插入排序 #include<vector> #include <algorithm> #include<iostrea ...