android添加商品到购物车,Android使用动画动态添加商品进购物车

本文实例为大家分享了Android添加商品进购物车的具体代码,供大家参考,具体内容如下

1、首先展示下效果图

aef8a86a4eb27cbd0452c7f7cb8ede0e.gif

2、讲一下思路,小球由加号位置运动到购物车位置,首先得获得这两个点在整个屏幕中的坐标,然后分别计算这两个点的横纵坐标的差值,再通过TranslateAnimation这个类设置小球在X、Y方向上的偏移量,最后通过AnimationSet这个类将这两个动画放在一起执行。这是小球运动的动画,还有就是购物车变大缩小的动画。这个动画通过ObjectAnimator的ofFloat的方法设置缩放,要注意的是当小球落下的时候,购物车才开始动画,所以要设置一下setStartDelay这个方法。

3、具体的代码我就贴一下动画部分的代码,如果想要这个Demo看下我最后贴出的Github的地址

@Override

public void setAnim(View view) {

// TODO Auto-generated method stub

int[] start_location = new int[2];// 一个整型数组用来存储按钮在屏幕的X,Y坐标

view.getLocationInWindow(start_location);// 购买按钮在屏幕中的坐标

buyImg = new ImageView(this);// 动画的小圆圈

buyImg.setImageResource(R.drawable.sign);// 设置buyImg的图片

setAnim(buyImg, start_location);

}

/**

* hdh: 创建动画层

*

* @return

*/

private ViewGroup createAnimLayout() {

ViewGroup rootView = (ViewGroup) this.getWindow().getDecorView();// 获得Window界面的最顶层

LinearLayout animLayout = new LinearLayout(this);

LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT, LinearLayout.LayoutParams.MATCH_PARENT);

animLayout.setLayoutParams(lp);

//animLayout.setId();

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

rootView.addView(animLayout);

return animLayout;

}

/**

* hdh:

*

* @param vp

* @param view

* @param location

* @return

*/

private View addViewToAnimLayout(final ViewGroup vp, 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;

}

/**

* hdh:动画

*

* @param v

* @param start_location

*/

private void setAnim(final View v, int[] start_location) {

anim_mask_layout = null;

anim_mask_layout = createAnimLayout();

anim_mask_layout.addView(v);

View view = addViewToAnimLayout(anim_mask_layout, v, start_location);

int[] end_location = new int[2];// 存储动画结束位置的X,Y坐标

text_chart_num.getLocationInWindow(end_location);// 将购物车的位置存储起来

// 计算位移

int endX = end_location[0] - start_location[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);// 动画重复次数

translateAnimationY.setFillAfter(true);

AnimationSet set = new AnimationSet(false);

set.setFillAfter(false);

set.addAnimation(translateAnimationX);

set.addAnimation(translateAnimationY);

set.setDuration(1000);

view.startAnimation(set);

set.setAnimationListener(new Animation.AnimationListener() {

@Override

public void onAnimationStart(Animation animation) {

// TODO Auto-generated method stub

v.setVisibility(View.VISIBLE);

}

@Override

public void onAnimationRepeat(Animation animation) {

// TODO Auto-generated method stub

}

@Override

public void onAnimationEnd(Animation animation) {

// TODO Auto-generated method stub

v.setVisibility(View.GONE);

}

});

ObjectAnimator anim = ObjectAnimator//

.ofFloat(view, "scale", 1.0F, 1.5F, 1.0f)//

.setDuration(500);//

anim.setStartDelay(1000);

anim.start();

anim.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {

@Override

public void onAnimationUpdate(ValueAnimator animation) {

float cVal = (Float) animation.getAnimatedValue();

image_chart.setScaleX(cVal);

image_chart.setScaleY(cVal);

text_chart_num.setScaleX(cVal);

text_chart_num.setScaleY(cVal);

}

});

}

4、GitHub地址:点击打开链接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/417085.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

字体小于12px解决办法

width: 100px; height: 30px;-webkit-transform: scale(0.5);margin: -7.5px -25px; 转载于:https://www.cnblogs.com/yghgo/p/6593449.html

前端学习(2338):记录解决问题的一次

<!DOCTYPE html> <html><head><meta charset"utf-8" /><title></title><style type"text/css">#f {font-size: 50px;font-family: 幼圆;}#btn {width: 50px;height: 30px;opacity: 0.5;background-color: paleg…

URAL1553 Caves and Tunnels 树链剖分 动态树

URAL1553 维护一棵树&#xff0c;随时修改某个节点的权值&#xff0c;询问&#xff08;x,y&#xff09;路径上权值最大的点。 树是静态的&#xff0c;不过套动态树也能过&#xff0c;时限卡的严就得上树链剖分了。 还是那句话 splay的核心是splay(x) LCT的核心是access(x) 把SP…

zb——中国人发起的编程语言之序章

20181110 大背景 贸易战&#xff0c;java11收费&#xff0c;python go等百家争鸣&#xff0c;但是没有一个是中国人发起创立的语言。 思考 夜来奇想&#xff0c;java不行了还有go&#xff0c;go如果要是不行了呢&#xff1f;python等都不行了呢&#xff1f; 中国人自己发起…

华为5g鸿蒙折叠,华为再次亮剑!5G新旗舰已经确认,折叠屏+升级到鸿蒙2.0,价格过万...

每年华为有两个新机上市高峰期&#xff0c;一个是年初的P系列发布之后&#xff0c;华为Nova系列、荣耀数字系列会跟着发布&#xff1b;另一个则是年底的华为Mate系列发布之后&#xff0c;华为Nova新系列和荣耀V系列也会一起发布。现在已经是9月底&#xff0c;再等不到一个月的时…

docker服务无法启动 神坑

背景环境 centos6 docker1.7 service docker status输出&#xff1a; docker dead but subsys locked 各种找资料 尝试&#xff1a; rm -rf /var/run/docker.* rm -rf /var/lock/subsys/docker &#xff08;备注&#xff1a;如果有需要备份的docker此处千万不要用rm -r…

apicloud,aliyunlive,测试成功

1.推流 <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><meta name"viewport" content"maximum-scale1.0,minimum-scale1.0,user-scalable0,widthdevice-width,initial-scale1.0"><ti…

centos7 编译安装nginx 设置自启动服务 支持https

编译环境安装 yum install -y gcc-c yum install -y pcre pcre-devel yum install -y zlib zlib-devel yum install -y openssl openssl-devel 下载nginx.tar.gz 编译 tar -xzvf nginx-1.15.3.tar.gz cd nginx-1.15.3 ./configure --sbin-path/usr/local/nginx/nginx -…

idea自动补全html标签,webstorm(idea)常见自动补全方法和常用快捷键

一&#xff1a;标签自动补全&#xff1a;(1)纯标签补全例&#xff1a;输入h1,按Tab键&#xff0c;(2)纯标签地址“id”例&#xff1a;输入h1#ccg,按Tab键&#xff0c;(3)纯标签类“class”例&#xff1a;输入h1.ccg,按Tab键&#xff0c;(4)标签子标签子标签个数例&#xff1a;输…

走进netty

三月份开始看公司RPC框架的源码,发现如果要折腾明白,网络通讯这块知识必不可少.于是从如下几点开始逐步研究. 一、基础知识篇 1.Unix下5种I/O模型 Linux的内核将所有外部设备都看作一个文件来操作,对于一个文件的读写操作会调用内核提供的系统命令,返回一个fd(文件描述符),而对…

html页面text固定长度,HTML中input type=text和type=password 显示的长度不一样

springmvc下js控制表单提交(表单提交前检验&#xff0c;提交后获取json返回值)这个问题我搞了四天,终于搞懂.因为对js很不熟悉.郁闷的是后台代码出错总可以设置断点调试,前端js代码出错只能通过浏览器提供一些运行数据来分析,很不习惯. 首先说下逻辑:这是一个注册功能,我希望,注…

springboot health检查

health检查一般用于spring cloud注册中心的存活检查&#xff0c;比如spring cloud consul配置 spring:cloud:consul:discovery:register: trueinstance-id: ${spring.application.name}:${server.port}service-name: ${spring.application.name}port: ${server.port}healthChe…

Sql server日期函数操作

1、获取前一小时内的数据&#xff1a;DATEADD(HOUR,-1,GETDATE())&#xff0c;将"HOUR"替换成DAY&#xff0c;Month,YEAR就是前一天&#xff0c;前一月&#xff0c;前一年 2、获取日期部分&#xff0c;格式为&#xff1a;yyyy-MM-dd, CONVERT(CHAR(10),GETDATE(),120…

div跳转html页面底部,即使没有内容,如何强制DIV块扩展到页面底部?

在下面显示的标记中&#xff0c;我试图使内容div一直延伸到页面底部&#xff0c;但是只有在有要显示的内容时才拉伸。我要这样做的原因是&#xff0c;即使没有任何内容要显示&#xff0c;垂直边框仍会在页面下方显示。这是我的HTML&#xff1a;而我的CSS&#xff1a;body {font…