日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

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

發(fā)布時(shí)間:2023/12/15 Android 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android开发之购物车添加商品实现抛物线动画 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

老套路先上圖:第一個(gè)是個(gè)人項(xiàng)目用到的效果圖,第二個(gè)數(shù)摳出來(lái)的demo

說(shuō)下思路很簡(jiǎn)單:第一步先拿到加號(hào)圖片在屏幕的坐標(biāo)(X,Y),然后拿到加號(hào)按鈕圖片的大小,然后將拿到的坐標(biāo)和大小復(fù)制給一個(gè)新的圖片按鈕,將這個(gè)新的圖片按鈕添加到加號(hào)按鈕的同一個(gè)位置。然后對(duì)這個(gè)新的加號(hào)按鈕進(jìn)行X,Y軸方向上的平移動(dòng)畫(huà)即可。具體實(shí)現(xiàn)請(qǐng)看代碼:

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 #* # ___/`---'\___ #* # .' \\| |# '. #* # / \\||| : |||# \ #* # / _||||| -:- |||||- \ #* # | | \\\ - #/ | | #* # | \_| ''\---/'' |_/ | #* # \ .-\__ '-' ___/-. / #* # ___'. .' /--.--\ `. .'___ #* # ."" '< `.___\_<|>_/___.' >' "". #* # | | : `- \`.;`\ _ /`;.`/ - ` : | | #* # \ \ `_. \_ __\ /__ _/ .-` / / #* # =====`-.____`.___ \_____/___.-`___.-'===== #* # `=---=' #* # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ #* # #* # 佛祖保佑 永無(wú)BUG #* # #*//*** @author 下一頁(yè)5(輕飛揚(yáng))* 創(chuàng)建時(shí)間:2020/3/9 13:32* 個(gè)人小站:http://yhsh.wap.ai(已掛)* 最新小站:http://www.iyhsh.icoc.in* 聯(lián)系作者:企鵝 13343401268* 博客地址:http://blog.csdn.net/xiayiye5* 項(xiàng)目名稱:HonorFirst* 文件包名:com.xiayiye.honorfirst.activity* 文件說(shuō)明:*/ 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) {//顯示購(gòu)物車拋物線動(dòng)畫(huà)showAnimate();}});}private void showAnimate() {//在同一個(gè)位置復(fù)制一個(gè)加號(hào)按鈕ImageButton ib = new ImageButton(this);//設(shè)置復(fù)制圖片的背景ib.setBackgroundResource(R.mipmap.button_add);//拿到原圖片的坐標(biāo)ibAdd.getLocationInWindow(outLocation);imgCart.getLocationInWindow(carLocation);//將原圖在屏幕上面的坐標(biāo)設(shè)置給復(fù)制的圖片Log.e("打印坐標(biāo)", "X:" + outLocation[0] + "==Y:" + (outLocation[1] - getStatusBarHeight()));ib.setX((float) outLocation[0]);//要減去狀態(tài)欄的高度ib.setY((float) (outLocation[1] - getStatusBarHeight()));//添加到窗體上flContainer.addView(ib, ibAdd.getWidth(), ibAdd.getHeight());Log.e("打印寬高:", ibAdd.getX() + "=" + ibAdd.getY() + "-----" + ib.getX() + "=" + ib.getY());//開(kāi)始拋物線動(dòng)畫(huà)組合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);//開(kāi)始執(zhí)行動(dòng)畫(huà)ib.startAnimation(animationSet);//設(shè)置動(dòng)畫(huà)結(jié)束的監(jiān)聽(tīng)animationSet.setAnimationListener(new Animation.AnimationListener() {@Overridepublic void onAnimationStart(Animation animation) {}@Overridepublic void onAnimationEnd(Animation animation) {//動(dòng)畫(huà)結(jié)束,移除動(dòng)畫(huà)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);}/*** 獲取狀態(tài)欄高度*/public int getStatusBarHeight() {Resources resources = getResources();int resourceId = resources.getIdentifier("status_bar_height", "dimen", "android");return resources.getDimensionPixelSize(resourceId);} }

如果覺(jué)得看不懂,可以點(diǎn)擊下載源碼查看:

源碼頁(yè)代碼查看

整個(gè)項(xiàng)目源碼下載

總結(jié)

以上是生活随笔為你收集整理的Android开发之购物车添加商品实现抛物线动画的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。