很多电商app的加入购物车的动作会要求加上动画效果:飞进购物车,想来也合理,在listview界面时商品快速加入购物车,一直toast用户加入成功好像不太正常,所以添加一个动画,用户自然就懂了,而且也挺美观。这里记录一个这样的demo,demo里面的注释足够详细,这里也会给出部分代码说明。

上效果

动画效果

上说明

使用方法1:

如果现成的效果还不够自己想要的效果,下载demo,把demo中library中的两个类拷贝出来放进自己的view文件夹,然后直接去修改它们,修改成满足自己需求的效果。

使用方法2:

如果觉得现成的效果足够满足自己需求了直接使用gradle依赖的方式:

1.Add it in your root build.gradle at the end of repositories:

allprojects {

repositories {

...

maven { url "https://jitpack.io" }

}

}

2.Add the dependency:

dependencies {

compile 'com.github.paradoxie:ShopAnimDemo:0.1'

}

自定义说明:

//启动动画

public void startAnim(View v) {

int[] end_location = new int[2];

int[] start_location = new int[2];

v.getLocationInWindow(start_location);// 获取购买按钮的在屏幕的X、Y坐标(动画开始的坐标)

car.getLocationInWindow(end_location);// 这是用来存储动画结束位置,也就是购物车图标的X、Y坐标

buyImg = new ImageView(this);// buyImg是动画的图片

buyImg.setImageResource(R.mipmap.sign);// 设置buyImg的图片

// mAniManager.setTime(5500);//自定义时间

mAniManager.setAnim(this, buyImg, start_location, end_location);// 开始执行动画

mAniManager.setOnAnimListener(new AniManager.AnimListener() {

@Override

public void setAnimBegin(AniManager a) {

//动画开始时的监听

}

@Override

public void setAnimEnd(AniManager a) {

//动画结束后的监听

num += 5;

buyNumView.setText(num + "");

buyNumView.show();

}

});

}

写一个点击事件中可直接调用的方法,内部实现为动画的配置,包括:动画的起点,即点击view的位置;动画的终点,即购物车图标的位置;界面上飞来飞去那个小图标;动画的持续时间;然后调用方法开始执行动画。这里给出了动画开始和结束的监听回调,因为一般在结束之后是需要修改一些显示状态的,具体查看demo实现效果。

另外,在图标之上有一个数字标签BadgeView,使用了自定义控件实现,使用时具体配置:

buyNumView = new BadgeView(this, car);//把这个数字标签放在购物车图标上

buyNumView.setBadgePosition(BadgeView.POSITION_CENTER);//放在图标中心

buyNumView.setTextColor(Color.WHITE);//数字颜色

buyNumView.setBadgeBackgroundColor(Color.BLUE);//背景颜色

buyNumView.setTextSize(9);//数字大小

注释给得十分清楚了,可去修改自己想要的效果。具体的使用配置只有这些,很容易理解哇

源码中获取ViewGroup时使用的是Activity.getWindow().getDecorView(),所以理论上支持所有activity和fragment中实现此效果,具体木有测试,如果有问题可以根据情况修改。本人正式项目中就是在fragment实现这个效果,虽然不是用的这个依赖库。

【UI篇】扩展阅读

本文作者:paradoxie

个人主页:谢盒盒的小黑屋,不止说技术

简书地址:简书主页,专注说技术

github地址:paradoxie

转载请注明出处,蟹蟹!

-------我的梦想真的是做一条咸鱼!

android长按加入购物车,《Android APP可能有的东西》之UI篇:加入购物车动画相关推荐

  1. android长截屏代码,android长截屏原理及实现代码

    android长截屏原理及实现代码 发布时间:2020-08-31 06:55:16 来源:脚本之家 阅读:158 作者:Android笔记 小米系统自带的长截屏应该很多人都用过,效果不错.当长截屏时 ...

  2. android长截图工具下载,Android实现长截屏功能

    本文实例为大家分享了Android实现长截屏功能的具体代码,供大家参考,具体内容如下 1.MainActivity public class MainActivity extends AppCompa ...

  3. android 长按赋值功能,android实现WebView中长按选中复制文本操作

    啥都不说了,老司机直接移步GITHUB看源码吧: https://github.com/deaboway/AndroidWebViewTextSelect 万一不work,一定不是代码的问题,你可以自 ...

  4. android节日祝福短信,Android-节日短信送祝福(UI篇)

    学员1010 2020-03-11 单列模式 第一个null判断 if (mInstance == null) 为了提供效率,多线程没必要每一次进行一次同步 第二个 synchronized(.cla ...

  5. android 上面月亮模式,Android UI 篇- 手势月亮 亮度动画

    Android UI 篇- 手势月亮动画 一.应用场景 1.1.先上效果图 2020-05-03 01_00_28.gif 一个有创意的亮度动画,通过手势上下滑动控制手机屏幕亮度,动画从太阳(天亮了) ...

  6. Android 长按APP图标弹出快捷方式(shortcuts)

    今天给大家分享一份关于Android 7.1版本的一个新特性 Shortcut 它是谷歌在Api Level 25提出来的 类似苹果3D touch 但是没有压力感应.在安卓中完全就是长按 某些APP ...

  7. android长按加入购物车,Android Studio实现简单购物车功能

    本文实例为大家分享了Android Studio实现简单购物车的具体代码,供大家参考,具体内容如下 MainActivity的布局文件 xmlns:app="http://schemas.a ...

  8. Android — 长按ListView 利用上下文菜单(ActionMode) 进行批量事件处理

    好久没写博客拉``````` 近期最终略微闲一点了``````` 无聊拿手机清理短信.发现批量事件的处理还是挺管用的`````` 那么自己也来山寨一记看看效果吧````` 闲话少说,首先,我们来看下手 ...

  9. Android 简单实现订单模块类APP的物流详情页

    不废话,需求:做一个订单模块类APP的物流详情页,怎么办? 这个功能完全是看到别人写的好,自己学习一下,主要写一下自己对别人代码的理解.参考文章:https://blog.csdn.net/weixi ...

最新文章

  1. 流程的python-学习《流畅的python》第一天
  2. Linux中设置定期备份oracle数据库
  3. 教徒计划出品:AIM-IPS升级到7.0步骤
  4. leetcode-1-两数之和
  5. android NDK c++ library
  6. java socket 报文解析_java socket解析和发送二进制报文工具(附java和C++转化问题)
  7. 前端学习(11):标题和段落
  8. windows 安装metis_Win10 VS2013 suitesparse-metis-for-windows 1.3.1
  9. 关于STM32L100xx, STM32L151xx, STM32L152xx ,STM32L162xx 的Power Control
  10. 无废话aspose-words-18.6 java版破解
  11. 信息论与编码之信源编码详解
  12. 19-离线词典生成原理、图像描述子用BoW转化为BoW向量和FeatureVe
  13. [TJOI2019]唱、跳、rap和篮球 题解
  14. 查看英伟达NVIDIA显卡型号
  15. C# excel 删除重复
  16. 上班族用哪个邮箱好用,如何正确使用邮件工作?
  17. Linux下shell命令:ps
  18. 微信服务商特约商户入驻接口(提交申请单)示例DEMO-java版
  19. 关于Andriod org.gradle.api.tasks.TaskExecutionException: Execution failed for task 问题及解决办法
  20. Ubuntu Mint Installation Guide

热门文章

  1. python单双三引号区别_python中单引号,双引号,多引号区别_python中单双引号
  2. mybatisplus执行sql语句_一条更新的SQL语句是如何执行的?
  3. python程序员脱单攻略_作为一只程序员,如何脱单?
  4. [蓝桥杯][算法训练VIP]接水问题(思维)
  5. 权值线段树小结(hdu多校,普通平衡树,郁闷的出纳员)
  6. 统计学习/机器学习常用小知识
  7. mysql 插入记录慢_mysql:insert插入数据过慢如何解决,设置innodb_flush_log_at_trx_commit为0就能解决...
  8. 构造器是什么?(Java篇)
  9. android pptx mime类型,application/vnd.android.package-archive是Apk的MIME类型
  10. oracle 分组排序后取第一条_关于oracle中位图索引的探讨:概念、原理、优缺点...