您的位置:首页 > 移动开发 > Android开发

Android 加入购物车动画

2016-09-24 11:32 239 查看
这个是个简单的加入购物车的动画,可以设置开始的位置和结束的位置。先看效果图:



MainActivity代码如下:

public class MainActivity extends Activity {
private LinearLayout gouwuche;
private TextView buyNum_tv;
private ImageView buyImg;// 这是在界面上跑的小图片
private ViewGroup anim_mask_layout;//动画层
private int buyNum = 0;//购买数量
private ImageView goshoppingcar;

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_main);
gouwuche = (LinearLayout) findViewById(R.id.jiaru_goshopping);
goshoppingcar = (ImageView) findViewById(R.id.detail_share);
buyNum_tv = (TextView) findViewById(R.id.buy_num);
gouwuche.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
int[] start_location = new int[2];// 一个整型数组,用来存储按钮的在屏幕的X、Y坐标
view.getLocationInWindow(start_location);// 这是获取购买按钮的在屏幕的X、Y坐标(这也是动画开始的坐标)
buyImg = new ImageView(MainActivity.this);// buyImg是动画的图片,我的是一个小球(R.drawable.sign)
buyImg.setImageResource(R.drawable.sign);// 设置buyImg的图片
setAnim(buyImg, start_location);// 开始执行动画
}
});
}

private void setAnim(final View v, int[] start_location) {
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坐标
goshoppingcar.getLocationInWindow(end_location);// shopCart是那个购物车

// 计算位移
int endX = 0 - start_location[0] + 40;// 动画位移的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,
end_location[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 Animation.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);
buyNum++;//让购买数量加1
buyNum_tv.setText(buyNum + "");//
buyNum_tv.setVisibility(View.VISIBLE);
}
});

}

/**
* @param
* @return void
* @throws
* @Description: 创建动画层
*/
private ViewGroup createAnimLayout() {
ViewGroup rootView = (ViewGroup) this.getWindow().getDecorView();
LinearLayout animLayout = new LinearLayout(this);
LinearLayout.LayoutParams lp = new LinearLayout.LayoutParams(
LinearLayout.LayoutParams.MATCH_PARENT,
LinearLayout.LayoutParams.MATCH_PARENT);
animLayout.setLayoutParams(lp);
animLayout.setBackgroundResource(android.R.color.transparent);
rootView.addView(animLayout);
return animLayout;
}

private 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;
}
}


activity_main布局文件:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical"
tools:context="beautifu.com.amincar.MainActivity">

<RelativeLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:background="#fae6c5">

<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerInParent="true"
android:text="加入购物车动画"
android:textColor="#875D34"
android:textSize="24sp" />

<ImageView
android:id="@+id/detail_share"
android:layout_width="50dp"
android:layout_height="50dp"
android:layout_alignParentRight="true"
android:layout_centerVertical="true"
android:scaleType="fitXY"
android:src="@drawable/shopping_car" />

<TextView
android:id="@+id/buy_num"
android:layout_width="15dp"
android:layout_height="15dp"
android:layout_alignParentRight="true"
android:layout_marginTop="5dp"
android:background="@drawable/gowu_bg"
android:gravity="center"
android:text="1"
android:textColor="#fff"
android:textSize="12sp"
android:visibility="gone" />
</RelativeLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="0dp"
android:layout_weight="1">

</LinearLayout>

<LinearLayout
android:layout_width="match_parent"
android:layout_height="50dp"
android:layout_alignParentBottom="true"
android:gravity="center"
android:orientation="horizontal">

<LinearLayout
android:id="@+id/jiaru_goshopping"
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="2"
android:background="#FF7F24"
android:clickable="true"
android:gravity="center"
android:orientation="horizontal">

<TextView
android:id="@+id/jiaru_tv"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="加入购物车"
android:textColor="#fff"
android:textSize="18sp" />
</LinearLayout>

<LinearLayout
android:layout_width="0dp"
android:layout_height="match_parent"
android:layout_weight="3">

<Button
android:id="@+id/lijiyuyue_commdetails"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:background="#ef7970"
android:text="立即购买"
android:textColor="#fff" />
</LinearLayout>
</LinearLayout>
</LinearLayout>


下面附上我的源码:

点击下载源码
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Android 购物车 动画