乐码库:一个极速、放心、纯净的下载站! 更新: 资源发布
  • 您的位置:首页 > 技术文档 > AndRoid > Android抛物线下载动画制作过程
  • 收藏本页
      Android抛物线下载动画制作过程
      发布时间:2016-12-21 08:08:29 关键词: Android抛物线下载动画,Android抛物线动画,Android下载动画
      内容简介:这篇文章主要为大家详细介绍了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;
    }
    

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

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

      相关内容
      最新更新
      热门排行榜