DevStore首页 > DEV资源 > 源码下载 > 源码详情

购物车动画(Android)

 
zhanghai_ardapp | 2017-03-25 14:36    浏览量(1886)    评论(1)    收藏(4)
功能分类:特效 支持平台:Android 运行环境:Android
开发语言:Java 开发工具:Android Studio 源码大小:19.05MB
下载源码 107 人下载

源码简介

当我们写商城类的项目的时候,一般都会有加入购物车的功能,加入购物车的时候会有一些抛物线动画,最近做到这个功能,借助别人的demo写了一个。涉及知识:1.沉浸式状态栏,2.单位精度计算(价格),3.List之Iterator。

源码截图

DevStore所有源码来自用户上传分享,版权问题及牵扯到商业纠纷均与DevStore无关。

源码片段

public class MainActivity extends AppCompatActivity implements FoodAdapter.FoodActionCallback {
    private ListView listView;
    private TextView goods_all_pricetv;
    private TextView good_numtv;
    private List list;
    private List 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 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 + "");
    }
}
  •   赞(2) 赞 +1 赞(2) 已赞
  •   收藏(4) 收藏 +1 已收藏 取消
  •   下载(107)
评论(1)
917848

917848 2017-05-18 20:56:46

地方如果湖人
回复(0) 赞(1) 赞(2)
  • 推荐
  • 审核
  • 收录
  • 获取活力值

源码上传作者

  • 22 能力值
  • 10 源码
  • 0 评测
  • 3 资料