Welcome

首页 / 移动开发 / Android / Android抛物线下载动画制作过程

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


实现

private void startAnim() {//以bitmap创建new ImageViewiv.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);TranslateAnimationtranslateAnimationY = new TranslateAnimation(0, 0, 0, endY);translateAnimationY.setInterpolator(new AccelerateInterpolator()); translateAnimationY.setRepeatCount(0);// 动画重复执行的次数 translateAnimationX.setFillAfter(true);AnimationSet set = newAnimationSet(false);set.setFillAfter(false); set.addAnimation(translateAnimationY); set.addAnimation(translateAnimationX);set.setDuration(2000);// 动画的执行时间 view.startAnimation(set);// 动画监听事件 set.setAnimationListener(new Animation.AnimationListener() {// 动画的开始@Overridepublic void onAnimationStart(Animation animation) { logo.setVisibility(View.VISIBLE); }@Overridepublic 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;}
代码就到此结束了,看起来并不难,动手试试吧。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。