《Android APP可能有的东西》之UI篇:加入购物车动画
很多电商app的加入购物车的动作会要求加上动画效果:飞进购物车,想来也合理,在listview界面时商品快速加入购物车,一直toast用户加入成功好像不太正常,所以添加一个动画,用户自然就懂了,而且也挺美观。这里记录一个这样的demo,demo里面的注释足够详细,这里也会给出部分代码说明。
上代码 ShopAnimDemo
上效果
动画效果上说明
使用方法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实现这个效果,虽然不是用的这个依赖库。
上代码 ShopAnimDemo
【UI篇】扩展阅读
《Android APP可能有的东西》之UI篇:流式标签&搜索历史
《Android APP可能有的东西》之UI篇:日夜间模式切换
《Android APP可能有的东西》之UI篇:展开TextView全文
本文作者:paradoxie
个人主页:谢盒盒的小黑屋,不止说技术
简书地址:简书主页,专注说技术
github地址:paradoxie
转载请注明出处,蟹蟹!
-------我的梦想真的是做一条咸鱼!