在做网购APP时,很多的app在点击购物车时都有一个图片动画效果,比较形象,我目前做的项目也涉及到了,把我使用的方法做个笔记:

先看一个简单的截图:

我们在点击列表中带+号的购物车时,会有一个图片多点击的购物车位置跑到右上角的购物车中,同时右上角的购物车数量增加1,实现原理很简单,就是我们常用的位移动画:

首先要个动画层ViewGroup anim_mask_layout;动画图片就在这个动画层上面移动:

创建动画层代码:

public ViewGroup createAnimLayout() {

ViewGroup rootView = (ViewGroup)this.getActivity().getWindow().getDecorView();

LinearLayout animLayout = new LinearLayout(getActivity());

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.MATCH_PARENT,

LinearLayout.LayoutParams.MATCH_PARENT);

animLayout.setLayoutParams(lp);

animLayout.setId(Integer.MAX_VALUE);

animLayout.setBackgroundResource(android.R.color.transparent);

rootView.addView(animLayout);

return animLayout;

}

添加动画视图到动画层:

public View addViewToAnimLayout(final ViewGroup vg, final View view,

int[] location) {

int x = location[0];

int y = location[1];

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(

LinearLayout.LayoutParams.WRAP_CONTENT,

LinearLayout.LayoutParams.WRAP_CONTENT);

lp.leftMargin = x;

lp.topMargin = y;

view.setLayoutParams(lp);

return view;

}

最后就是动画实现:其中的第一个参数就是在你调用这个方法时传入的动画图片,第二个参数是你传入图片所在的Location:

public void setTranslateAnim(final View v, int[] start_location) {

if(anim_mask_layout==null)

anim_mask_layout = createAnimLayout();

anim_mask_layout.addView(v);//把动画视图添加到动画层

final View view = addViewToAnimLayout(anim_mask_layout, v,

start_location);

int[] end_location = new int[2];// 这是用来存储动画结束位置的X、Y坐标

shopCart.getLocationInWindow(end_location);// shopCart是那个购物车

// 计算位移

int endX = 0 ;// 动画位移的X坐标

int endY = end_location[1] - start_location[1];// 动画位移的y坐标

TranslateAnimation translateAnimationX = new TranslateAnimation(0,

endX, 0, 0);

translateAnimationX.setInterpolator(new LinearInterpolator());

translateAnimationX.setRepeatCount(0);// 动画重复执行的次数

translateAnimationX.setFillAfter(true);

TranslateAnimation translateAnimationY = new TranslateAnimation(0, 0,

0, endY);

translateAnimationY.setInterpolator(new AccelerateInterpolator());

translateAnimationY.setRepeatCount(0);// 动画重复执行的次数

translateAnimationX.setFillAfter(true);

AnimationSet set = new AnimationSet(false);

set.setFillAfter(false);

set.addAnimation(translateAnimationY);

set.addAnimation(translateAnimationX);

set.setDuration(800);// 动画的执行时间

view.startAnimation(set);

// 动画监听事件

set.setAnimationListener(new AnimationListener() {

// 动画的开始

@Override

public void onAnimationStart(Animation animation) {

v.setVisibility(View.VISIBLE);

}

@Override

public void onAnimationRepeat(Animation animation) {

// TODO Auto-generated method stub

}

// 动画的结束

@Override

public void onAnimationEnd(Animation animation) {

v.setVisibility(View.GONE);

anim_mask_layout.removeView(view);

// buyNum++;//让购买数量加1

}

});

}

android网购功能,网购Android App购物车点击动画实现详解相关推荐

  1. Android开发之如何在App间安全地共享文件(FileProvider详解)?

    [版权申明]非商业目的可自由转载 博文地址:https://blog.csdn.net/ShuSheng0007/article/details/103125707 出自:shusheng007 相关 ...

  2. Android 动画框架详解,第 1 部分

    2019独角兽企业重金招聘Python工程师标准>>> Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果,本文将向读者阐述 Android 的动画框 ...

  3. Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(一)

    文章大纲 引言 一.Android Storage Access Framework 二.Storage Access Framework 的主要角色成员 1.Document Provider 文件 ...

  4. Android 动画框架详解

    Android 动画框架详解 基本原理 朱 韦伟, 软件工程师, IBM 李 浩, 软件工程师, 爱格码 简介: Android 平台提供了一套完整的动画框架,使得开发者可以用它来开发各种动画效果.A ...

  5. Android 进阶——Framework 核心之Android Storage Access Framework(SAF)存储访问框架机制详解(二)

    文章大纲 引言 一.DirectFragment 1.当选中DirectoryFragment中RecyclerView的Item时 2.选中DirectoryFragment中RecyclerVie ...

  6. Android Animator(动画)类 详解

    Android Animator动画类 详解 动画分为3种 ValueAnimator类 ObjectAnimator类 AnimatorSet类 Animator的addListener()方法(监 ...

  7. Android 吸入动画效果详解(仿mac退出效果)

    转载自:http://m.blog.csdn.net/blog/leehong2005/9127095 [转]Android 吸入动画效果详解 1,背景 吸入(Inhale)效果,最初我是在iOS上面 ...

  8. UICC 之 USIM 详解全系列——USIM App关键流程介绍与命令详解

    本人就职于国际知名终端厂商,负责modem芯片研发. 在5G早期负责终端数据业务层.核心网相关的开发工作,目前牵头6G算力网络技术标准研究. 文章目录 USIM App关键流程介绍与命令详解 USIM ...

  9. android拍照功能编程,android实现手机App实现拍照功能示例

    实现手机App实现拍照功能结果如下 第一步: activity_takephoto.xml布局用SurfaceView xmlns:tools="http://schemas.android ...

最新文章

  1. Nature子刊:华中农大Kenichi Tsuda组利用植物体内原位细菌转录及蛋白组学鉴定寄主免疫攻击的病原菌蛋白...
  2. 大数据+机器学习#x3D;天下无敌!
  3. 剑走偏锋——用css制作一个三角形箭头
  4. 软件构造学习笔记-实验1
  5. 认识Java异步编程
  6. 利用perspective 和 transform 里面的几个参数来实现旋转照片墙
  7. 上传自定义日志_ZKEYS系统重磅更新,新增后台数据库备份、主控运行日志管理等新功能!...
  8. java 安祿山,夏天吃生菜最清爽,生菜上澆點蠔油,做法簡單,卻好吃到不行,換成肉還跟我生氣!...
  9. 【问题解决】sql2012安装时卡在正在启动操作系统功能"NetFx3"上不动的解决办法
  10. winform利用html开发,Winform开发框架之HTML编辑控件介绍
  11. H5页面和微信小程序的优劣对比
  12. 2020认证杯第二阶段选提建议
  13. mysql 基数_MySQL 索引基数
  14. LoRa和NB-IoT会长期共存吗?
  15. Mongodb副本集RECOVERING
  16. 【专题】详解Python中的反射机制
  17. 服务器如何搭建FTP
  18. Cocos Creator基础(十二) sp.Skeleton骨骼动画组件使用
  19. FTP远程传输文件操作
  20. 天涯网站跨站漏洞(ALLyeSNO)

热门文章

  1. Ubuntu16.04安装有道词典
  2. pip国内常用镜像源汇总
  3. DS SIMULIA CST STUDIO SUITE 2021.05 SP5
  4. Unity碰撞检测机制的原理(更新中...)
  5. 【机房收费个人版】七层登陆
  6. 有关REST的一些内容
  7. 2020-04-19-如何在博客中添加视频链接
  8. 不做etl sql 怎么直接取_不管茄子怎么做,直接下锅是大错!多加1步,茄子更入味,不变色...
  9. 基于C语言实现的足球信息查询系统 课程报告+项目源码+演示PPT+项目截图
  10. 如何定位硬盘物理位置