Android拋物線下載動(dòng)畫制作過(guò)程
下載動(dòng)畫經(jīng)常出現(xiàn)在下載需求多的app中,比如游戲下載平臺(tái),應(yīng)用市場(chǎng)……
先看看效果圖:

實(shí)現(xiàn)
private void startAnim() {
//以bitmap創(chuàng)建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);
}
設(shè)置動(dòng)畫
private void setAnim(final ImageView logo, int[] startLocation,int[] location_download) {
ViewGroup animMaskLayout = createAnimLayout();
animMaskLayout.addView(logo);// 把動(dòng)畫小球添加到動(dòng)畫層
// 計(jì)算位移
final View view = addViewToAnimLayout(logo, startLocation);
// 動(dòng)畫位移的X坐標(biāo)
int endY = location_download[1] - startLocation[1];
// 動(dòng)畫位移的y坐標(biāo)
TranslateAnimation translateAnimationX = new TranslateAnimation(0, endX, 0, 0);
translateAnimationX.setInterpolator(new LinearInterpolator());
translateAnimationX.setRepeatCount(0);// 動(dòng)畫重復(fù)執(zhí)行的次數(shù)
translateAnimationX.setFillAfter(true); TranslateAnimation
translateAnimationY = new TranslateAnimation(0, 0, 0, endY);
translateAnimationY.setInterpolator(new AccelerateInterpolator());
translateAnimationY.setRepeatCount(0);// 動(dòng)畫重復(fù)執(zhí)行的次數(shù)
translateAnimationX.setFillAfter(true); AnimationSet set = new
AnimationSet(false);
set.setFillAfter(false);
set.addAnimation(translateAnimationY);
set.addAnimation(translateAnimationX);
set.setDuration(2000);// 動(dòng)畫的執(zhí)行時(shí)間
view.startAnimation(set); // 動(dòng)畫監(jiān)聽(tīng)事件
set.setAnimationListener(new Animation.AnimationListener() {
// 動(dòng)畫的開(kāi)始
@Override
public void onAnimationStart(Animation animation) {
logo.setVisibility(View.VISIBLE);
}
@Override
public void onAnimationRepeat(Animation animation) {
}
// 動(dòng)畫的結(jié)束
@Override
public void onAnimationEnd(Animation animation) {
logo.setVisibility(View.GONE);
}
});
}
創(chuàng)建動(dòng)畫父布局
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;
}
設(shè)置動(dòng)畫布局參數(shù)
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;
}
代碼就到此結(jié)束了,看起來(lái)并不難,動(dòng)手試試吧。
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
- Android編程實(shí)現(xiàn)ImageView圖片拋物線動(dòng)畫效果的方法
- Android使用音頻信息繪制動(dòng)態(tài)波紋
- Android編程繪制圓形圖片的方法
- Android自定義View之繼承TextView繪制背景
- Android編程之canvas繪制各種圖形(點(diǎn),直線,弧,圓,橢圓,文字,矩形,多邊形,曲線,圓角矩形)
- Android實(shí)現(xiàn)給TableLayou繪制邊框的方法
- Android使用Canvas繪制圓形進(jìn)度條效果
- Android使用自定義View繪制漸隱漸現(xiàn)動(dòng)畫
- Android Path繪制貝塞爾曲線實(shí)現(xiàn)QQ拖拽泡泡
- Android自定義控件繪制基本圖形基礎(chǔ)入門
- Android編程繪制拋物線的方法示例
相關(guān)文章
Android原生TabLayout使用的超全解析(看這篇就夠了)
現(xiàn)在很多app都有頂部可左右切換的導(dǎo)航欄,并且還帶動(dòng)畫效果,要實(shí)現(xiàn)這種導(dǎo)航欄,可以使用Android原生的Tablayout也可以借助第三方框架實(shí)現(xiàn),這篇文章主要給大家介紹了關(guān)于Android原生TabLayout使用的相關(guān)資料,需要的朋友可以參考下2022-09-09
ListView的View回收引起的checkbox狀態(tài)改變監(jiān)聽(tīng)等問(wèn)題解決方案
之前講到了自定義Adapter傳遞給ListView時(shí),因?yàn)長(zhǎng)istView的View回收,需要注意當(dāng)ListView列表項(xiàng)中包含有帶有狀態(tài)標(biāo)識(shí)控件的問(wèn)題,感興趣的朋友可以祥看本文,或許會(huì)有意外的收獲哦2013-01-01
Android選擇圖片或視頻進(jìn)行循環(huán)播放
這篇文章主要為大家詳細(xì)介紹了Android選擇圖片或視頻進(jìn)行循環(huán)播放,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2017-10-10
Android實(shí)現(xiàn)院系專業(yè)三級(jí)聯(lián)動(dòng)
這篇文章主要為大家詳細(xì)介紹了Android實(shí)現(xiàn)院系專業(yè)三級(jí)聯(lián)動(dòng),文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-03-03
Android10 App啟動(dòng)Activity源碼分析
這篇文章主要為大家介紹了Android10 App啟動(dòng)Activity源碼分析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-10-10
Android 組合控件實(shí)現(xiàn)布局的復(fù)用的方法
本篇文章主要介紹了Android 組合控件實(shí)現(xiàn)布局的復(fù)用的方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08
Android 中menu同時(shí)顯示圖標(biāo)和文字的實(shí)現(xiàn)
這篇文章主要介紹了Android 中menu同時(shí)顯示圖標(biāo)和文字的實(shí)現(xiàn)的相關(guān)資料,希望通過(guò)本文能幫助到大家實(shí)現(xiàn)這樣的功能,需要的朋友可以參考下2017-10-10

