• 购物车动画(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 + "");
        }
    }

    源码下载...

     

     

  • 相关阅读:
    蓝桥杯 猴子分苹果
    蓝桥杯 王、后传说 dfs
    蓝桥杯 C*++ Calculations 贪心
    python random模块 分类: python python Module python基础学习 2013-06-26 12:06 383人阅读 评论(0) 收藏
    去除列表中不重复的元素 分类: python 小练习 2013-06-25 14:59 245人阅读 评论(0) 收藏
    去除文件每行的第一个字符 分类: python 2013-06-24 15:03 414人阅读 评论(0) 收藏
    用户输入内容长度限制的异常 分类: python异常 2013-06-24 10:48 335人阅读 评论(0) 收藏
    使用python下载文件 分类: python python下载 2013-06-22 16:58 277人阅读 评论(0) 收藏
    猜数字 分类: python 小练习 python基础学习 2013-06-20 15:16 160人阅读 评论(0) 收藏
    Linux系统中ls命令用法详解 分类: ubuntu 2013-06-20 14:29 261人阅读 评论(0) 收藏
  • 原文地址:https://www.cnblogs.com/xxdh/p/6645155.html
Copyright © 2020-2023  润新知