2012-10-20 86 views
2

(本主題不是關於.setfillafter(true))。當點擊查看動畫後退

我對android的動畫有點麻煩,希望有人能幫助我。

我創建了一個Linearlayout和一個listview。

listView被放置在一個相對佈局,因爲我必須在相同的相對佈局中設置另一個linearLayout的translationY,但我保留排除其他linearlayout的問題。

當在LinearLayout中有人clicks or taps(將像一個按鈕)的列表視圖將向下動畫一點點與下面幾行:

animation_Fold = new TranslateAnimation(0, 0, 0, 150); 
createNewAnimationListener(); //to monitor when the animation ends and starts. 

animation_Fold.setDuration(300); 
animation_Fold.setFillAfter(true); 
listview_Contacts.startAnimation(animation_Fold); 

正如你可以看到我創建動畫,它向下移動150(像素?)。

現在有更多的代碼來動畫列表視圖回到其原來的位置,但我認爲這是不相關的這個問題。 (它幾乎是相同的,但從YDelta和YDelta將會顛倒過來。)

當我點擊列表視圖(並不重要,我點擊後)它已被動畫,它將會踢回到原來的位置。 但我用.setFillAfter(true),那爲什麼會發生在我身上呢?因爲我只是想讓列表視圖保持新的給定位置。 (動畫的位置)

我希望有人可以幫助我完成我的動畫,因爲我被困在這一個。

回答

1

好的,我覺得有點奇怪,因爲你們都認爲我自己說話,我想回答自己的問題。但是,不幸的是,情況並非如此。

所以到了這一點。

我解決了我自己的問題,但我不認爲這是它意味着解決的方式。 正如我在Amokrane Chentir的評論中提到的,我發現當你禁用listview時,你不必設置物理位置。 這意味着,當我點擊列表視圖當動畫完成,當列表視圖被禁用時,列表視圖不響應,將忽略每個用戶輸入(和聽衆)。 但是,我可以做什麼與禁用的列表視圖,根本沒有。

但是,當動畫執行一次時,listview不需要與用戶交互,所以禁用是一件好事,離我的解決方案更近一步。 我唯一需要解決的是在動畫再次顛倒的時候在適當的時候啓用listview。 我這樣做是通過禁用listview,並使用onClickListener使ListView下方的RelativeLayout可點擊。 onClickListener在用戶單擊listView時偵聽,設置動畫並反向啓用列表視圖。 問題解決。

這使得listview對用戶交互不可見。

if(isUnfolded) 
{ 
    listview_Contacts.setClickable(false); 
    listview_Contacts.setEnabled(false); 
} 
else 
{ 
    listview_Contacts.setClickable(true); 
    listview_Contacts.setEnabled(true); 
} 

監視何時點擊relativeLayout的onClickListener。

rlvLayout.setOnClickListener(new OnClickListener() 
{   
public void onClick(View v) 
    { 
     if(isUnfolded) 
     toggleFoldAnimation(); 
} 
}); 

隨時回答或添加評論爲更好的解決方案,否則我希望這個解決方案幫助其他人。

0

所以基本上我認爲發生的事情是您的視圖是從用戶界面的角度(這只是渲染)動畫,但其物理位置沒有改變。您需要使用方法layout在動畫結束時明確移動該視圖。

animation_Fold.setAnimationListener(new AnimationListener() { 
      @Override 
      public void onAnimationEnd(Animation animation) { 
       // Move your view here using view.layout(r, t, l, b) 
      } 
}); 

這樣,它會將您的視圖移動到所需的位置。

+0

不,你說得對,我不調整任何物理位置的listview。但在我嘗試將這個相對新的位置設置之前,卻沒有運氣。我沒有嘗試使用.layout(....),所以我希望這次有更多的運氣。但是,再次,它沒有解決這個問題。它確實設置了佈局的新位置,但是當您點擊列表視圖時,它會再次踢回與之前相同的空間量。 –

+0

我禁用了列表視圖,現在我沒有任何問題。唯一的(也是更大的問題是..)我無法檢測到有人點擊列表視圖。現在它的殘疾人聽衆也被禁用。我的想法是識別是否觸摸了列表視圖並反轉了動畫。 –