2013-04-20 82 views
0

我正在開發一款應用程序,可在檢測到NFC卡後從我的服務器下載信息。完成多項任務後Android會執行

當檢測到卡,我開始 - 一個的AsyncTask從我的服務器 下載一些數據 - 出現在屏幕

上的AsyncTask和動畫都經過彈出的動畫都做了,我想啓動一個方法,在彈出窗口中顯示下載的數據。

什麼是觸發這種新方法的正確方法?它只能在滿足兩個條件時開始。

+0

什麼是「彈出式動畫」?你的意思是以動畫方式出現的彈出窗口?如果是這樣,需要多長時間?或者你的意思是彈出窗口顯示某種動畫圖形?再次,如果是這樣,需要多長時間才能完成? – Squonk 2013-04-20 18:04:23

+0

我的意思是一個以動畫方式出現的彈出窗口。大約需要一秒鐘。但是,如果數據在一秒鐘內加載,動畫就會被中斷,而且看起來不再流暢。 – Mtvw 2013-04-20 18:15:53

+0

因此,'AsyncTask'使用'onPostExecute(...)'將數據保存到全局字段,然後如果該字段不是「null」,則彈出窗口在動畫完成時從該字段加載數據。爲了補償延遲下載,在彈出的類中有一個方法,可以通過'AsyncTask'的'onPostExecute(...)'方法來調用,以通知彈出窗口數據可用。 – Squonk 2013-04-20 19:19:06

回答

0

Animation對象有方法setAnimationLister。它採用一個類對象的參數來實現接口Animation.AnimationListener。此接口需要實施三種方法:

@Override 
public void onAnimationStart(Animation animation) { 

} 

@Override 
public void onAnimationEnd(Animation animation) { 

} 

@Override 
public void onAnimationRepeat(Animation animation) { 

} 

動畫結束時會觸發onAnimationEnd。如果我沒有誤解你,這是你所需要的

編輯:

可以有兩個布爾值,boolean animationFinished = false, downloadFinished = false;當onPostExecute被稱爲將downloadFinished設爲true時,請致電。 當onAnimationEnd被觸發animationFinished = true並致電。 應該像下面這樣開始:

if (!animationFinished || !downloadFinished) 
return; 
+0

這實際上是我需要的,但我的問題進一步: 我怎樣才能啓動一個方法** **動畫和Asynctask完成? 我目前的意見是宣佈2布爾和檢查onAnimationEnd和onPostExecute – Mtvw 2013-04-20 19:02:23

+0

請參閱我的編輯..... – Blackbelt 2013-04-20 19:07:10

+0

我有同樣的想法。如果存在更好的方法,我現在不會 – Blackbelt 2013-04-20 19:12:38

1

在您使用下載數據異步任務添加onPostExecute方法來刪除動畫彈出窗口並顯示下載的數據,以及這樣的:

protected void onPostExecute(Long result) { 
    //put code to disable animation popup 
    //code for displaying downloaded data popup 
} 

欲瞭解更多信息請查看http://developer.android.com/reference/android/os/AsyncTask.html

+0

問題是我想在顯示下載的數據之前完成動畫。大多數情況下,數據的加載速度比動畫的持續時間快 – Mtvw 2013-04-20 18:30:31

+0

然後您可以定義全局布爾值。然後在下載數據的異步任務的doinbackground中使用while循環來檢查動畫是否已完成。並在動畫的onPostExecute更改布爾值 – Saurabh 2013-04-21 04:52:34