购物类appAndroidAndroid-动画系列

《Android APP可能有的东西》之UI篇:加入购物车动画

2016-10-18  本文已影响1723人  温瑜

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

上一篇下一篇

猜你喜欢

热点阅读