老套路先上图:第一个是个人项目用到的效果图,第二个数抠出来的demo

说下思路很简单:第一步先拿到加号图片在屏幕的坐标(X,Y),然后拿到加号按钮图片的大小,然后将拿到的坐标和大小复制给一个新的图片按钮,将这个新的图片按钮添加到加号按钮的同一个位置。然后对这个新的加号按钮进行X,Y轴方向上的平移动画即可。具体实现请看代码:

package com.xiayiye.honorfirst.activity;import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Handler;
import android.util.Log;
import android.view.View;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.TranslateAnimation;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import android.widget.ImageView;import com.xiayiye.honorfirst.R;import androidx.annotation.Nullable;/** Copyright (c) 2020, smuyyh@gmail.com All Rights Reserved.* #                                                   #* #                       _oo0oo_                     #* #                      o8888888o                    #* #                      88" . "88                    #* #                      (| -_- |)                    #* #                      0\  =  /0                    #* #                    ___/`---'\___                  #* #                  .' \\|     |# '.                 #* #                 / \\|||  :  |||# \                #* #                / _||||| -:- |||||- \              #* #               |   | \\\  -  #/ |   |              #* #               | \_|  ''\---/''  |_/ |             #* #               \  .-\__  '-'  ___/-. /             #* #             ___'. .'  /--.--\  `. .'___           #* #          ."" '<  `.___\_<|>_/___.' >' "".         #* #         | | :  `- \`.;`\ _ /`;.`/ - ` : | |       #* #         \  \ `_.   \_ __\ /__ _/   .-` /  /       #* #     =====`-.____`.___ \_____/___.-`___.-'=====    #* #                       `=---='                     #* #     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~   #* #                                                   #* #               佛祖保佑         永无BUG            #* #                                                   #*//*** @author 下一页5(轻飞扬)* 创建时间:2020/3/9 13:32* 个人小站:http://yhsh.wap.ai(已挂)* 最新小站:http://www.iyhsh.icoc.in* 联系作者:企鹅 13343401268* 博客地址:http://blog.csdn.net/xiayiye5* 项目名称:HonorFirst* 文件包名:com.xiayiye.honorfirst.activity* 文件说明:*/
public class LineAnimateActivity extends Activity {private FrameLayout flContainer;private ImageButton ibAdd;private ImageView imgCart;private int[] outLocation = new int[2];private int[] carLocation = new int[2];@Overrideprotected void onCreate(@Nullable Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.activity_line_animate);initView();initListener();}private void initListener() {ibAdd.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {//显示购物车抛物线动画showAnimate();}});}private void showAnimate() {//在同一个位置复制一个加号按钮ImageButton ib = new ImageButton(this);//设置复制图片的背景ib.setBackgroundResource(R.mipmap.button_add);//拿到原图片的坐标ibAdd.getLocationInWindow(outLocation);imgCart.getLocationInWindow(carLocation);//将原图在屏幕上面的坐标设置给复制的图片Log.e("打印坐标", "X:" + outLocation[0] + "==Y:" + (outLocation[1] - getStatusBarHeight()));ib.setX((float) outLocation[0]);//要减去状态栏的高度ib.setY((float) (outLocation[1] - getStatusBarHeight()));//添加到窗体上flContainer.addView(ib, ibAdd.getWidth(), ibAdd.getHeight());Log.e("打印宽高:", ibAdd.getX() + "=" + ibAdd.getY() + "-----" + ib.getX() + "=" + ib.getY());//开始抛物线动画组合AnimationSet animationSet = new AnimationSet(false);TranslateAnimation translateAnimationX = new TranslateAnimation(Animation.ABSOLUTE, 0F, Animation.ABSOLUTE, carLocation[0] - outLocation[0], Animation.ABSOLUTE, 0.0f, Animation.ABSOLUTE, 0.0f);TranslateAnimation translateAnimationY = new TranslateAnimation(Animation.ABSOLUTE, 0F, Animation.ABSOLUTE, 0.0f, Animation.ABSOLUTE, 0.0f, Animation.ABSOLUTE, carLocation[1] - outLocation[1]);//Y轴增加加速效果translateAnimationY.setInterpolator(new AccelerateInterpolator());animationSet.addAnimation(translateAnimationX);animationSet.addAnimation(translateAnimationY);animationSet.setDuration(1500);//开始执行动画ib.startAnimation(animationSet);//设置动画结束的监听animationSet.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {//动画结束,移除动画new Handler().post(new Runnable() {@Overridepublic void run() {//方法一:
//                        ((ViewGroup) ib.getParent()).removeView(ib);//方法二:flContainer.removeView(ib);}});}@Overridepublic void onAnimationRepeat(Animation animation) {}});}private void initView() {ibAdd = findViewById(R.id.ib_add);imgCart = findViewById(R.id.imgCart);flContainer = findViewById(R.id.fl_Container);}/*** 获取状态栏高度*/public int getStatusBarHeight() {Resources resources = getResources();int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");return resources.getDimensionPixelSize(resourceId);}
}

如果觉得看不懂,可以点击下载源码查看:

源码页代码查看

整个项目源码下载

Android开发之购物车添加商品实现抛物线动画相关推荐

  1. Java商品规格添加购物车_关于java+jsp购物车添加商品的有关问题,来哦

    关于java+jsp购物车添加商品的有关问题,来哦 热度:9587   发布时间:2013-02-25 21:44:20 关于java+jsp购物车添加商品的问题,,高手进来哦 提示错误: An er ...

  2. android动画view上移,在Android开发中使用View制作一个引导动画

    在Android开发中使用View制作一个引导动画 发布时间:2020-11-20 16:46:16 来源:亿速云 阅读:98 作者:Leah 这篇文章将为大家详细讲解有关在Android开发中使用V ...

  3. 基于Redis优化购物车 - 添加商品

    @ApiOperation(value = "添加商品到购物车", notes = "添加商品到购物车", httpMethod = "POST&qu ...

  4. android手机电话号码,Android开发:实现添加系统联系人(手机号码,姓名)

    之前遇到了一些知识没有总结的习惯,今天来回顾一下一个简单的小功能:Android开发中调起系统的联系人列表. 在网上收到了好多这方面的知识,自己在写代码的时候总结了一个最简化的方法,希望可以给大家提供 ...

  5. Android开发笔记(九十六)集合动画与属性动画

    集合动画AnimationSet 补间动画有四大类:透明度动画AlphaAnimation.旋转动画RotateAnimation.缩放动画ScaleAnimation.平移动画TranslateAn ...

  6. 购物车添加商品代码 php,PHP购物车类代码

    PHP购物车类代码 在开发网络购物网站的时候,购物车类是购物网站的必备模块.总结一个php实现购物车类.实现了购物车中的商品的添加,修改,删除,列表,以及各种计算的相关功能.采用了php单一类的原理, ...

  7. Android开发之动态添加控件

    动态添加TextView控件: 一:创建一个Android project项目 activity_main.xml文件: 1.用两个LinearLayout布局分别包裹一对TextView,EditT ...

  8. Android开发之动态添加WebView实现进度条标题栏展示效果

    老路子:看图 说白了就是不用layout的xml写布局,直接用纯代码手写布局实现上面的效果:代码如下: 请将下面代码放到onCreate中动态加载布局即可 LinearLayout linearLay ...

  9. Android开发之购物车加减按钮(附加源码)

    老套路,先看效果图 直接上代码: package com.xiayiye.shopcarnumberadd.view;import android.content.Context; import an ...

最新文章

  1. 苹果设置网易邮箱收件服务器,如何在iPhone 3/4、iPod touch的邮件应用程序中使用IMAP服务...
  2. mysql图标_MySQL 支持 emoji 图标存储
  3. 取得 Git 仓库 —— Git 学习笔记 04
  4. oracle表对比同步,Oracle表双向同步问题
  5. linux网络编程之SCTP套接字常用接口
  6. JS定时器使用,定时定点,固定时刻,循环执行
  7. big5码在线转换_【开源】基于 SpringBoot 的 web kettle 在线采集平台
  8. 4. COM编程——IUnknown介绍
  9. 一图区分1.85mm/2.4mm/2.92mm/3.5mm/SMA射频接头
  10. Word中输入10以上带圈数字
  11. wifi网卡工作模式和iwconfig
  12. yoga14s amd r7-4800h虚拟机安装黑苹果记录
  13. Verilog HDL 实现 74HC595
  14. 计算机图形学坐标系的作用,坐标系的概念和坐标系之间的变换
  15. 10年10亿,贝佐斯投了8轮的机器人公司留下的昂贵一课 | 甲子光年
  16. AK acm/oj.Print a Chessboard
  17. 对脚手架的使用的几点建议
  18. ORA-00600_内部错误代码_参数19004
  19. f2fs学习笔记 -11. f2fs gc
  20. h5可拖动悬浮按钮_仙剑客栈H5如何双开 2021最新双开神器来袭

热门文章

  1. 目前最常用的计算机机箱类型为_绍兴承接离心风机箱高品质
  2. oracle desc能看约束,ORACLE 12C新特性-DESC显示不可见字段 | 信春哥,系统稳,闭眼上线不回滚!...
  3. eprom是计算机内存吗,存储器EPROM的应用
  4. java中super可以重新父类么_Java Super 覆盖方法
  5. Bootstrap 学习笔记4 巨幕页头略缩图警告框
  6. 深入浅出parallelStream
  7. 第一阶段冲刺 第二天
  8. LeetCode141 Linked List Cycle. LeetCode142 Linked List Cycle II
  9. 闲谈.NET中的类型和访问修饰符
  10. 如何自动判断url中汉字的编码格式