Android教程網
  1. 首頁
  2. Android 技術
  3. Android 手機
  4. Android 系統教程
  5. Android 游戲
 Android教程網 >> Android技術 >> 關於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;
}

代碼就到此結束了,看起來並不難,動手試試吧。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持本站。

  1. 上一頁:
  2. 下一頁:
熱門文章
閱讀排行版
Copyright © Android教程網 All Rights Reserved