Android开发之购物车添加商品实现抛物线动画
老套路先上图:第一个是个人项目用到的效果图,第二个数抠出来的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开发之购物车添加商品实现抛物线动画相关推荐
- Java商品规格添加购物车_关于java+jsp购物车添加商品的有关问题,来哦
关于java+jsp购物车添加商品的有关问题,来哦 热度:9587 发布时间:2013-02-25 21:44:20 关于java+jsp购物车添加商品的问题,,高手进来哦 提示错误: An er ...
- android动画view上移,在Android开发中使用View制作一个引导动画
在Android开发中使用View制作一个引导动画 发布时间:2020-11-20 16:46:16 来源:亿速云 阅读:98 作者:Leah 这篇文章将为大家详细讲解有关在Android开发中使用V ...
- 基于Redis优化购物车 - 添加商品
@ApiOperation(value = "添加商品到购物车", notes = "添加商品到购物车", httpMethod = "POST&qu ...
- android手机电话号码,Android开发:实现添加系统联系人(手机号码,姓名)
之前遇到了一些知识没有总结的习惯,今天来回顾一下一个简单的小功能:Android开发中调起系统的联系人列表. 在网上收到了好多这方面的知识,自己在写代码的时候总结了一个最简化的方法,希望可以给大家提供 ...
- Android开发笔记(九十六)集合动画与属性动画
集合动画AnimationSet 补间动画有四大类:透明度动画AlphaAnimation.旋转动画RotateAnimation.缩放动画ScaleAnimation.平移动画TranslateAn ...
- 购物车添加商品代码 php,PHP购物车类代码
PHP购物车类代码 在开发网络购物网站的时候,购物车类是购物网站的必备模块.总结一个php实现购物车类.实现了购物车中的商品的添加,修改,删除,列表,以及各种计算的相关功能.采用了php单一类的原理, ...
- Android开发之动态添加控件
动态添加TextView控件: 一:创建一个Android project项目 activity_main.xml文件: 1.用两个LinearLayout布局分别包裹一对TextView,EditT ...
- Android开发之动态添加WebView实现进度条标题栏展示效果
老路子:看图 说白了就是不用layout的xml写布局,直接用纯代码手写布局实现上面的效果:代码如下: 请将下面代码放到onCreate中动态加载布局即可 LinearLayout linearLay ...
- Android开发之购物车加减按钮(附加源码)
老套路,先看效果图 直接上代码: package com.xiayiye.shopcarnumberadd.view;import android.content.Context; import an ...
最新文章
- 苹果设置网易邮箱收件服务器,如何在iPhone 3/4、iPod touch的邮件应用程序中使用IMAP服务...
- mysql图标_MySQL 支持 emoji 图标存储
- 取得 Git 仓库 —— Git 学习笔记 04
- oracle表对比同步,Oracle表双向同步问题
- linux网络编程之SCTP套接字常用接口
- JS定时器使用,定时定点,固定时刻,循环执行
- big5码在线转换_【开源】基于 SpringBoot 的 web kettle 在线采集平台
- 4. COM编程——IUnknown介绍
- 一图区分1.85mm/2.4mm/2.92mm/3.5mm/SMA射频接头
- Word中输入10以上带圈数字
- wifi网卡工作模式和iwconfig
- yoga14s amd r7-4800h虚拟机安装黑苹果记录
- Verilog HDL 实现 74HC595
- 计算机图形学坐标系的作用,坐标系的概念和坐标系之间的变换
- 10年10亿,贝佐斯投了8轮的机器人公司留下的昂贵一课 | 甲子光年
- AK acm/oj.Print a Chessboard
- 对脚手架的使用的几点建议
- ORA-00600_内部错误代码_参数19004
- f2fs学习笔记 -11. f2fs gc
- h5可拖动悬浮按钮_仙剑客栈H5如何双开 2021最新双开神器来袭
热门文章
- 目前最常用的计算机机箱类型为_绍兴承接离心风机箱高品质
- oracle desc能看约束,ORACLE 12C新特性-DESC显示不可见字段 | 信春哥,系统稳,闭眼上线不回滚!...
- eprom是计算机内存吗,存储器EPROM的应用
- java中super可以重新父类么_Java Super 覆盖方法
- Bootstrap 学习笔记4 巨幕页头略缩图警告框
- 深入浅出parallelStream
- 第一阶段冲刺 第二天
- LeetCode141 Linked List Cycle. LeetCode142 Linked List Cycle II
- 闲谈.NET中的类型和访问修饰符
- 如何自动判断url中汉字的编码格式