日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 运维知识 > Android >内容正文

Android

Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果)...

發(fā)布時(shí)間:2023/12/14 Android 34 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果)... 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Android動畫之仿美團(tuán)加載數(shù)據(jù)等待時(shí),小人奔跑進(jìn)度動畫對話框(附順豐快遞員奔跑效果)

?

首句依然是那句老話,你懂得!?finddreams?:(http://blog.csdn.net/finddreams/article/details/43194799)。 我們都知道在Android中,常見的動畫模式有兩種:一種是幀動畫(Frame Animation),一種是補(bǔ)間動畫(Tween Animation)。幀動畫是提供了一種逐幀播放圖片的動畫方式,播放事先做好的圖像,與gif圖片原理類似,就像是在放電影一樣。補(bǔ)間動畫可以實(shí)現(xiàn)View組件的移動、放大、縮小以及漸變等效果。 今天我們主要來模仿一下美團(tuán)中加載數(shù)據(jù)時(shí)小人奔跑動畫的對話框效果,取個(gè)有趣的名字就是Running Man,奔跑吧,兄弟!話不多少,先上效果圖,讓各位大俠看看是不是你想要實(shí)現(xiàn)的效果,然后再決定是否往下閱讀,因?yàn)樽鰹槌绦騿T我們的時(shí)間都很寶貴,畢竟還沒有女朋友呢? (ps:因?yàn)榧夹g(shù)原因,提供的動態(tài)圖效果不是很明顯,但在手機(jī)上運(yùn)行是非常好的,有興趣的朋友可以下載源碼看看。) 下面講講實(shí)現(xiàn)的原理,首先我們在項(xiàng)目的res目錄下新建一下anim文件夾,然后新建一個(gè)xml文件,添加如下代碼: [html]?view plain?copy
  • <?xml?version="1.0"?encoding="utf-8"?>??
  • <animation-list?xmlns:android="http://schemas.android.com/apk/res/android"??
  • ????android:oneshot="false"?>??
  • ??
  • ????<item??
  • ????????android:drawable="@drawable/app_loading0"??
  • ????????android:duration="150"/>??
  • ????<item??
  • ????????android:drawable="@drawable/app_loading1"??
  • ????????android:duration="150"/>??
  • ??
  • </animation-list>??
  • ? animation-list 是動畫列表,中間放很多的item 也就是組成幀動畫的圖片, android:drawable[drawable]//加載Drawable對象 android:duration[long]//每一幀動畫的持續(xù)時(shí)間(單位ms)
    ? ? ?android:oneshot[boolean]//動畫是否只運(yùn)行一次,true運(yùn)行一次,false重復(fù)運(yùn)行 寫好之后我們來看自定義一個(gè)對話框,來實(shí)現(xiàn)打開對話框時(shí),自動加載奔跑的動畫。見代碼: [java]?view plain?copy
  • /**?
  • ?*?@Description:自定義對話框?
  • ?*?@author?http://blog.csdn.net/finddreams?
  • ?*/??
  • public?class?CustomProgressDialog?extends?ProgressDialog?{??
  • ??
  • ????private?AnimationDrawable?mAnimation;??
  • ????private?Context?mContext;??
  • ????private?ImageView?mImageView;??
  • ????private?String?mLoadingTip;??
  • ????private?TextView?mLoadingTv;??
  • ????private?int?count?=?0;??
  • ????private?String?oldLoadingTip;??
  • ????private?int?mResid;??
  • ??
  • ????public?CustomProgressDialog(Context?context,?String?content,?int?id)?{??
  • ????????super(context);??
  • ????????this.mContext?=?context;??
  • ????????this.mLoadingTip?=?content;??
  • ????????this.mResid?=?id;??
  • ????????setCanceledOnTouchOutside(true);??
  • ????}??
  • ??
  • ????@Override??
  • ????protected?void?onCreate(Bundle?savedInstanceState)?{??
  • ????????super.onCreate(savedInstanceState);??
  • ????????initView();??
  • ????????initData();??
  • ????}??
  • ??
  • ????private?void?initData()?{??
  • ??
  • ????????mImageView.setBackgroundResource(mResid);??
  • ????????//?通過ImageView對象拿到背景顯示的AnimationDrawable??
  • ????????mAnimation?=?(AnimationDrawable)?mImageView.getBackground();??
  • ????????//?為了防止在onCreate方法中只顯示第一幀的解決方案之一??
  • ????????mImageView.post(new?Runnable()?{??
  • ????????????@Override??
  • ????????????public?void?run()?{??
  • ????????????????mAnimation.start();??
  • ??
  • ????????????}??
  • ????????});??
  • ????????mLoadingTv.setText(mLoadingTip);??
  • ??
  • ????}??
  • ??
  • ????public?void?setContent(String?str)?{??
  • ????????mLoadingTv.setText(str);??
  • ????}??
  • ??
  • ????private?void?initView()?{??
  • ????????setContentView(R.layout.progress_dialog);??
  • ????????mLoadingTv?=?(TextView)?findViewById(R.id.loadingTv);??
  • ????????mImageView?=?(ImageView)?findViewById(R.id.loadingIv);??
  • ????}??
  • ??
  • }??

  • ? ? ? ? ?可以看到在代碼中,我們使用到一個(gè)imageview.post(Runnable r)方法,因?yàn)閹瑒赢嬓枰粩嗟闹禺?#xff0c;所以必須在線程中運(yùn)行,否則只能看到第一幀的效果,這和我們做游戲的原理是一樣的,一個(gè)人物的走動,是有線程在控制圖片的不斷重畫。 當(dāng)然還有另外一個(gè)方法也能實(shí)現(xiàn): [java]?view plain?copy
  • @Override??
  • ????public?void?onWindowFocusChanged(boolean?hasFocus)?{??
  • ????????//?TODO?Auto-generated?method?stub??
  • ????????mAnimation.start();???
  • ????????super.onWindowFocusChanged(hasFocus);??
  • ????}??
  • ? ? ? 最后就是在Activity中調(diào)用了,詳情:
    [java]?view plain?copy
  • CustomProgressDialog?dialog?=new?CustomProgressDialog(this,?"正在加載中",R.anim.frame);??
  • ????????dialog.show();??

  • ? ? ? ? 對于CustomProgressDialog這個(gè)自定義對話框類是封裝的比較好的,調(diào)用起來十分方便,你可以快速的替換成你想要的效果,只需更改圖片就可以了。 最后附上源代碼,還不夠理解的朋友可以下載看看,希望對你有所幫助; http://download.csdn.net/detail/finddreams/8401429

    總結(jié)

    以上是生活随笔為你收集整理的Android动画之仿美团加载数据等待时,小人奔跑进度动画对话框(附顺丰快递员奔跑效果)...的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。