首页 > 系统 > Android > 正文

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

2019-12-12 04:28:59
字体:
来源:转载
供稿:网友

下载动画经常出现在下载需求多的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;}

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

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表