Android实现购物车添加物品的动画效果

 更新时间:2017年03月30日 14:39:27   作者:曦笑大海  
本文主要介绍了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 + "");
 }
}

源码下载

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,同时也希望多多支持脚本之家!

相关文章

  • Android使用ViewDragHelper实现仿QQ6.0侧滑界面(一)

    Android使用ViewDragHelper实现仿QQ6.0侧滑界面(一)

    这篇文章主要介绍了Android使用ViewDragHelper实现仿QQ6.0侧滑界面(一)的相关资料,需要的朋友可以参考下
    2016-02-02
  • Android HttpURLConnection.getResponseCode()错误解决方法

    Android HttpURLConnection.getResponseCode()错误解决方法

    在使用HttpURLConnection.getResponseCode()的时候直接报错是IOException错误,一直想不明白,同一个程序我调用了两次,结果有一个链接一直OK,另一个却一直报这个错误
    2013-06-06
  • Android 使用Path实现涂鸦功能

    Android 使用Path实现涂鸦功能

    到月底了最近比较空闲,今天抽空给大家实现一个涂鸦效果,会分几步实现,这里有一个重要的知识点就是图层,要理解这个。下面先从简单的说起,一起看看代码吧
    2016-12-12
  • Android 6.0调用相机图册崩溃的完美解决方案

    Android 6.0调用相机图册崩溃的完美解决方案

    这篇文章主要介绍了Android 6.0调用相机图册崩溃的完美解决方案,本文介绍的非常详细,具有参考借鉴价值,需要的朋友可以参考下
    2016-09-09
  • Flutter中如何加载并预览本地的html文件的方法

    Flutter中如何加载并预览本地的html文件的方法

    这篇文章主要介绍了Flutter中如何加载并预览本地的html文件的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-11-11
  • Android实现第三方授权登录、分享以及获取用户资料

    Android实现第三方授权登录、分享以及获取用户资料

    本篇文章介绍了Android实现第三方授权登录、分享以及获取用户资料,详细的介绍了第三方授权登录的实现代码,有需要的朋友可以了解一下。
    2016-11-11
  • 蓝牙原理Android代码实现

    蓝牙原理Android代码实现

    这篇文章主要为大家详细介绍了蓝牙原理Android代码实现,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2016-09-09
  • android 软键盘的POPUP布局的问题解决

    android 软键盘的POPUP布局的问题解决

    这篇文章主要介绍了android 软键盘的POPUP布局的问题解决,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2018-10-10
  • Android编程中关于单线程模型的理解与分析

    Android编程中关于单线程模型的理解与分析

    这篇文章主要介绍了Android编程中关于单线程模型的理解与分析,较为详细的分析了Android编程中关于单线程的原理与相关使用技巧,具有一定参考借鉴价值,需要的朋友可以参考下
    2015-10-10
  • Android应用退出登录的实现方法

    Android应用退出登录的实现方法

    每一个app都会有一个”退出登陆”的功能,当点击退出之后需要将所有的Activity都finish掉,开始是想将栈中的所有Activity清除掉,但是没有找到方法,后来用广播实现了。下面小编给大家分享android应用退出登录的实现方法,需要的朋友参考下
    2017-04-04

最新评论