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


相关推荐: Win11怎么查看显卡温度 Win11任务管理器查看GPU温度【技巧】  Laravel怎么集成Vue.js_Laravel Mix配置Vue开发环境  在线教育网站制作平台,山西立德教育官网?  javascript中闭包概念与用法深入理解  创业网站制作流程,创业网站可靠吗?  简历在线制作网站免费版,如何创建个人简历?  如何在IIS7中新建站点?详细步骤解析  Laravel如何处理CORS跨域请求?(配置示例)  无锡营销型网站制作公司,无锡网选车牌流程?  Laravel如何设置定时任务(Cron Job)_Laravel调度器与任务计划配置  Laravel如何处理表单验证?(Requests代码示例)  Laravel如何编写单元测试和功能测试?(PHPUnit示例)  猪八戒网站制作视频,开发一个猪八戒网站,大约需要多少?或者自己请程序员,需要什么程序员,多少程序员能完成?  java获取注册ip实例  Laravel如何配置和使用队列处理异步任务_Laravel队列驱动与任务分发实例  Bootstrap整体框架之JavaScript插件架构  Laravel怎么清理缓存_Laravel optimize clear命令详解  小米17系列还有一款新机?主打6.9英寸大直屏和旗舰级影像  Laravel如何升级到最新版本?(升级指南和步骤)  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何在万网开始建站?分步指南解析  再谈Python中的字符串与字符编码(推荐)  HTML透明颜色代码怎么让下拉菜单透明_下拉菜单透明背景指南【技巧】  Laravel如何清理系统缓存命令_Laravel清除路由配置及视图缓存的方法【总结】  Laravel如何实现数据库事务?(DB Facade示例)  Laravel如何生成PDF或Excel文件_Laravel文档导出工具与使用教程  如何在七牛云存储上搭建网站并设置自定义域名?  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  python中快速进行多个字符替换的方法小结  如何解决hover在ie6中的兼容性问题  高性能网站服务器配置指南:安全稳定与高效建站核心方案  为什么php本地部署后css不生效_静态资源加载失败修复技巧【技巧】  如何用JavaScript实现文本编辑器_光标和选区怎么处理  做企业网站制作流程,企业网站制作基本流程有哪些?  如何获取PHP WAP自助建站系统源码?  详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)  Laravel distinct去重查询_Laravel Eloquent去重方法  七夕网站制作视频,七夕大促活动怎么报名?  java ZXing生成二维码及条码实例分享  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  香港服务器WordPress建站指南:SEO优化与高效部署策略  Laravel如何实现事件和监听器?(Event & Listener实战)  深圳网站制作的公司有哪些,dido官方网站?  浅谈Javascript中的Label语句  浅谈redis在项目中的应用  Windows Hello人脸识别突然无法使用  利用python获取某年中每个月的第一天和最后一天  Laravel如何实现数据导出到CSV文件_Laravel原生流式输出大数据量CSV【方案】  Laravel怎么自定义错误页面_Laravel修改404和500页面模板  html文件怎么打开证书错误_https协议的html打开提示不安全【指南】