《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
转载请注明出处,蟹蟹!
-------我的梦想真的是做一条咸鱼!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 176,080评论 25 709
  • 发现 关注 消息 iOS 第三方库、插件、知名博客总结 作者大灰狼的小绵羊哥哥关注 2017.06.26 09:4...
    肇东周阅读 14,610评论 4 61
  • 人的一生中或许会有很多的遗憾,会有很多自己完不成的事情,会有很多自己觉得力不从心的事情,但我们在面对这些遗憾的时候...
    千慧阅读 3,994评论 0 0
  • 是黑夜, 还是白昼? 分不清。 梦魇拉扯着理想: 别走! 这里有 醉酒的女郎, 还有 你梦寐的追求。 凌钟一惊, ...
    时光清浅阿莲阅读 1,490评论 0 7
  • 当今的社会竞争越来越激烈,要想在其中出类拔萃,占得先机,就要比别人想得更远,做得更好,这个与个人的思考力是有关的,...
    章鱼哥的进步日记阅读 2,405评论 0 3

友情链接更多精彩内容