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)