Android实现购物车添加物品的动画效果
发布时间 - 2026-01-11 00:27:03 点击率:次前言:当我们写商城类的项目的时候,一般都会有加入购物车的功能,加入购物车的时候会有一些抛物线动画,最近做到这个功能,借助别人的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实现购物车功能
# Android实现的仿淘宝购物车demo示例
# Android实现仿淘宝购物车增加和减少商品数量功能demo示例
# Android中实现淘宝购物车RecyclerView或LIstView的嵌套选择的逻辑
# Android把商品添加到购物车的动画效果(贝塞尔曲线)
# Android实现简单购物车功能
# Android仿外卖购物车功能
# Android仿饿了么加入购物车旋转控件自带闪转腾挪动画的按钮效果(实例详解)
# Android制作简单的普通购物车
# Android实现二级购物车的全选加反选、总价功能
# 购物车
# 状态栏
# 会有
# 写了
# 当我们
# 源码下载
# 为空
# 份数
# list
# gt
# null
# adapter
# ArrayList
# selectList
# goods_all_pricetv
# TextView
# listView
# FoodModel
# lt
# good_numtv
相关栏目:
【
网站优化151355 】
【
网络推广146373 】
【
网络技术251813 】
【
AI营销90571 】
相关推荐:
Linux后台任务运行方法_nohup与&使用技巧【技巧】
利用JavaScript实现拖拽改变元素大小
Laravel数据库迁移怎么用_Laravel Migration管理数据库结构的正确姿势
如何在香港服务器上快速搭建免备案网站?
网页制作模板网站推荐,网页设计海报之类的素材哪里好?
Laravel如何处理CORS跨域请求?(配置示例)
html5audio标签播放结束怎么触发事件_onended回调方法【教程】
北京专业网站制作设计师招聘,北京白云观官方网站?
网站制作壁纸教程视频,电脑壁纸网站?
深圳网站制作培训,深圳哪些招聘网站比较好?
Laravel怎么集成Log日志记录_Laravel单文件与每日日志配置及自定义通道【详解】
Laravel怎么解决跨域问题_Laravel配置CORS跨域访问
Laravel怎么定时执行任务_Laravel任务调度器Schedule配置与Cron设置【教程】
香港服务器建站指南:外贸独立站搭建与跨境电商配置流程
零基础网站服务器架设实战:轻量应用与域名解析配置指南
微信h5制作网站有哪些,免费微信H5页面制作工具?
Python3.6正式版新特性预览
使用PHP下载CSS文件中的所有图片【几行代码即可实现】
Win11怎么设置默认图片查看器_Windows11照片应用关联设置
uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址
如何在 Python 中将列表项按字母顺序编号(a.、b.、c. …)
Laravel如何实现本地化和多语言支持?(i18n教程)
如何快速上传建站程序避免常见错误?
Laravel Docker环境搭建教程_Laravel Sail使用指南
MySQL查询结果复制到新表的方法(更新、插入)
手机怎么制作网站教程步骤,手机怎么做自己的网页链接?
中山网站制作网页,中山新生登记系统登记流程?
php中::能调用final静态方法吗_final修饰静态方法调用规则【解答】
Python进程池调度策略_任务分发说明【指导】
如何在建站之星绑定自定义域名?
Laravel如何操作JSON类型的数据库字段?(Eloquent示例)
Laravel怎么实现支付功能_Laravel集成支付宝微信支付
香港服务器选型指南:免备案配置与高效建站方案解析
Laravel全局作用域是什么_Laravel Eloquent Global Scopes应用指南
Laravel怎么实现API接口鉴权_Laravel Sanctum令牌生成与请求验证【教程】
香港服务器建站指南:免备案优势与SEO优化技巧全解析
Laravel如何配置Horizon来管理队列?(安装和使用)
如何登录建站主机?访问步骤全解析
简历没回改:利用AI润色让你的文字更专业
Laravel软删除怎么实现_Laravel Eloquent SoftDeletes功能使用教程
Linux系统运维自动化项目教程_Ansible批量管理实战
学生网站制作软件,一个12岁的学生写小说,应该去什么样的网站?
海南网站制作公司有哪些,海口网是哪家的?
公司网站制作价格怎么算,公司办个官网需要多少钱?
品牌网站制作公司有哪些,买正品品牌一般去哪个网站买?
Win11搜索不到蓝牙耳机怎么办 Win11蓝牙驱动更新修复【详解】
Win11怎么修改DNS服务器 Win11设置DNS加速网络【指南】
香港服务器租用每月最低只需15元?
Laravel怎么导出Excel文件_Laravel Excel插件使用教程
Laravel中DTO是什么概念_在Laravel项目中使用数据传输对象(DTO)

