Android抛物线下载动画制作过程

下载动画经常出现在下载需求多的app中,比如游戏下载平台,应用市场……

先看看效果图:

实现

private void startAnim() {

//以bitmap创建new ImageView

iv.setDrawingCacheEnabled(true);

Bitmap bitmap = iv.getDrawingCache();

ImageView logo = new ImageView(this);

logo.setScaleType(ImageView.ScaleType.FIT_XY);

logo.setImageBitmap(bitmap);

int[] startLocation = new int[2];

iv.getLocationInWindow(startLocation);

end.getLocationInWindow(location_download);

setAnim(logo, startLocation, location_download);

}

设置动画

private void setAnim(final ImageView logo, int[] startLocation,int[] location_download) {

ViewGroup animMaskLayout = createAnimLayout();

animMaskLayout.addView(logo);// 把动画小球添加到动画层

// 计算位移

final View view = addViewToAnimLayout(logo, startLocation);

// 动画位移的X坐标

int endY = location_download[1] - startLocation[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);// 动画重复执行的次数

translateAnimationX.setFillAfter(true); AnimationSet set = new

AnimationSet(false);

set.setFillAfter(false);

set.addAnimation(translateAnimationY);

set.addAnimation(translateAnimationX);

set.setDuration(2000);// 动画的执行时间

view.startAnimation(set); // 动画监听事件

set.setAnimationListener(new Animation.AnimationListener() {

// 动画的开始

@Override

public void onAnimationStart(Animation animation) {

logo.setVisibility(View.VISIBLE);

}

@Override

public void onAnimationRepeat(Animation animation) {

}

// 动画的结束

@Override

public void onAnimationEnd(Animation animation) {

logo.setVisibility(View.GONE);

}

});

}

创建动画父布局

private ViewGroup createAnimLayout() {

ViewGroup rootView = (ViewGroup) 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.setId(Integer.MAX_VALUE);

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

rootView.addView(animLayout);

return animLayout;

}

设置动画布局参数

private static View addViewToAnimLayout(final View view, int[] location) {

int x = location[0];

int y = location[1];

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

lp.leftMargin = x;

lp.topMargin = y;

view.setLayoutParams(lp);

return view;

}

代码就到此结束了,看起来并不难,动手试试吧。

以上是 Android抛物线下载动画制作过程 的全部内容, 来源链接: utcz.com/z/320134.html

回到顶部