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打开提示不安全【指南】

