购物车动画(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相关的包: < ...
随机推荐
- ASP.NET Core中Middleware的使用
https://www.cnblogs.com/shenba/p/6361311.html ASP.NET 5中Middleware的基本用法 在ASP.NET 5里面引入了OWIN的概念,大致意 ...
- SpringCloud---API网关服务---Spring Cloud Zuul
1.概述 1.1 微服务架构出现的问题 及 解决: 1.1.1 前言 每个微服务应用都提供对外的Restful API服务,它通过F5.Nginx等网络设备或工具软件实现对各个微服务的路由与负载 ...
- Ubuntu 18.04上搭建FTP服务器
1.准备工作需要安装并运行的Ubuntu Server 18.04系统.当然还需要一个具有sudo权限的账号. 2.安装VSFTPVSFTP程序位于标准存储库中,因此可以使用单个命令删除安装.打开终端 ...
- android httpclient 发送 PATCH 请求
Put 用于全部更新 Patch 用于部分更新 重写一下 HttpPut 或 HttpPost 的 getMethod 方法 /** * Send a patch request */ public ...
- 【C语言】-返回指针的函数与指向函数的指针
本文目录 前言 一.返回指针的函数 二.指向函数的指针 说明:这个C语言专题,是学习iOS开发的前奏.也为了让有面向对象语言开发经验的程序员,能够快速上手C语言.如果你还没有编程经验,或者对C语言.i ...
- RequireJs学习笔记之Define a Module
简单的键值对定义define({ color: "black", size: "unisize"}); 如果一个模块没有任何依赖,又需要做用一个函数 ...
- Android ListView分组显示
ListView的实现方法也是普通的实现方法.只不过在list列表中加入groupkey信息.在渲染的时候要判断是否是分组的标题. 就是在使用不同的两个View的时候存在这种情况,convertVie ...
- hadoop命令详解
一.用户命令1.archive命令 (1).什么是Hadoop archives?Hadoop archives是特殊的档案格式.一个Hadoop archive对应一个文件系统目录. Hadoop ...
- oracle系统包——dbms_transaction用法
用于在过程,函数和包中执行sql事务处理语句. 1.read_only用于开始只读事务,其作用与sql语句set transaction read only完全相同2.read_write用于开始读写 ...
- git忽略ssl认证
问题 在是用git克隆仓库的时候,报错如下: fatal: unable to access ‘https://github.com/........../‘: OpenSSL SSL_connect ...