Android 编程下帧动画在 Activity 启动时自动运行的几种方式
生活随笔
收集整理的這篇文章主要介紹了
Android 编程下帧动画在 Activity 启动时自动运行的几种方式
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
Android 開(kāi)發(fā)過(guò)程中部分 Activity 在顯示的時(shí)候就要求給用戶顯示一個(gè)進(jìn)度框來(lái)改善用戶體驗(yàn),比如:Activity 在啟動(dòng)的時(shí)候就去聯(lián)網(wǎng)請(qǐng)求數(shù)據(jù)、讀取數(shù)據(jù)庫(kù)內(nèi)容等。進(jìn)度框顯示樣式如下,采用幀動(dòng)畫,而非 ProgressBar。幀動(dòng)畫的啟動(dòng)方式有四種,代碼分別如下:
?
? 第一種方式在 Activity 啟動(dòng)時(shí)自動(dòng)運(yùn)行動(dòng)畫
package cn.sunzn.anim;import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.view.ViewTreeObserver.OnPreDrawListener; import android.widget.ImageView;public class AnimActivity extends Activity {/*** 動(dòng)畫控件*/private ImageView mLoading;private AnimationDrawable mLoadingAinm;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}/*** 完成初始化*/private void init() {initView();}/*** 初始化視圖*/private void initView() {mLoading = (ImageView) findViewById(R.id.loading);mLoading.setBackgroundResource(R.drawable.progressbar_activity_waiting);mLoadingAinm = (AnimationDrawable) mLoading.getBackground();mLoading.getViewTreeObserver().addOnPreDrawListener(listener);}/*** 當(dāng)一個(gè)視圖樹(shù)將要繪制時(shí)產(chǎn)生事件,可以添加一個(gè)其事件處理函數(shù),注意結(jié)尾返回的值*/OnPreDrawListener listener = new OnPreDrawListener() {public boolean onPreDraw() {mLoadingAinm.start();return true;}};}?
? 第二種方式在 Activity 啟動(dòng)時(shí)自動(dòng)運(yùn)行動(dòng)畫
package cn.sunzn.anim;import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.AsyncTask; import android.os.Bundle; import android.widget.ImageView;public class AnimActivity extends Activity {/*** 動(dòng)畫控件*/private ImageView mLoading;/*** 數(shù)據(jù)加載動(dòng)畫*/private AnimationDrawable mLoadingAinm;/*** 異步類執(zhí)行啟動(dòng)動(dòng)畫*/private RunAnim runAnim;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}/*** 完成初始化*/private void init() {initView();}/*** 初始化視圖*/private void initView() {mLoading = (ImageView) findViewById(R.id.loading);mLoading.setBackgroundResource(R.drawable.progressbar_activity_waiting);mLoadingAinm = (AnimationDrawable) mLoading.getBackground();runAnim = new RunAnim();runAnim.execute("");}/*** 異步類執(zhí)行動(dòng)畫*/class RunAnim extends AsyncTask<String, String, String> {protected String doInBackground(String... params) {if (!mLoadingAinm.isRunning()) {mLoadingAinm.stop();mLoadingAinm.start();}return "";}}}?
? 第三種方式在 Activity 啟動(dòng)時(shí)自動(dòng)運(yùn)行動(dòng)畫
package cn.sunzn.anim;import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.widget.ImageView;public class AnimActivity extends Activity {/*** 動(dòng)畫控件*/private ImageView mLoading;/*** 數(shù)據(jù)加載動(dòng)畫*/private AnimationDrawable mLoadingAinm;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}/*** 完成初始化*/private void init() {initView();}/*** 初始化視圖*/private void initView() {mLoading = (ImageView) findViewById(R.id.loading);mLoading.setBackgroundResource(R.drawable.progressbar_activity_waiting);mLoadingAinm = (AnimationDrawable) mLoading.getBackground();mLoading.post(new Runnable() {public void run() {mLoadingAinm.start();}});}}?
?? 第四種方式在 Activity 啟動(dòng)時(shí)自動(dòng)運(yùn)行動(dòng)畫
package cn.sunzn.anim;import android.app.Activity; import android.graphics.drawable.AnimationDrawable; import android.os.Bundle; import android.widget.ImageView;public class AnimActivity extends Activity {/*** 動(dòng)畫控件*/private ImageView mLoading;/*** 數(shù)據(jù)加載動(dòng)畫*/private AnimationDrawable mLoadingAinm;public void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(R.layout.main);init();}/*** 完成初始化*/private void init() {initView();}/*** 初始化視圖*/private void initView() {mLoading = (ImageView) findViewById(R.id.loading);mLoading.setBackgroundResource(R.drawable.progressbar_activity_waiting);mLoadingAinm = (AnimationDrawable) mLoading.getBackground();}/*** 窗體焦點(diǎn)改變時(shí)執(zhí)行動(dòng)畫*/public void onWindowFocusChanged(boolean hasFocus) {mLoadingAinm.start();super.onWindowFocusChanged(hasFocus);}}?
轉(zhuǎn)載于:https://www.cnblogs.com/sunzn/archive/2013/05/24/3096760.html
總結(jié)
以上是生活随笔為你收集整理的Android 编程下帧动画在 Activity 启动时自动运行的几种方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: Visual Entity 手册
- 下一篇: 【Android 界面效果10】Andr