下載動畫經常出現在下載需求多的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;}代碼就到此結束了,看起來并不難,動手試試吧。
以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。
新聞熱點
疑難解答