2015-11-09 39 views
1

正如標題所說,我需要重置一個視圖,它是TextView,ImageView和其他到它的初始狀態。例如,在觸摸該特定視圖後,動畫播放及其動畫會破壞(視覺)該視圖。如何在此動畫之後休息/初始化視圖?

現在我需要重新繪製一遍。希望你明白了。我也使用了https://github.com/tyrantgit/ExplosionField的ExplosionField效果。我已經運行了代碼,它正在工作。

下面是代碼:

private ExplosionField mExplosionField; 
private TextView tv_1; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    tv_1 = (TextView)findViewById(R.id.mytext_xml); 
    mExplosionField = ExplosionField.attach2Window(this); 
    addListener(findViewById(R.id.root)); 

} 

private void addListener(View root) { 
    // TODO Auto-generated method stub 
    if (root instanceof ViewGroup) { 
     ViewGroup parent = (ViewGroup) root; 
     for (int i = 0; i < parent.getChildCount(); i++) { 
      addListener(parent.getChildAt(i)); 
     } 
    } else { 
     root.setClickable(true); 
     root.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View v) { 
       mExplosionField.explode(v); 
       v.setOnClickListener(null); 
      } 
     }); 
    } 
} 

現在,請按 「action_reset」 必須繪製的TextView從開始。

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 
    if (id == R.id.action_reset) { 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
    } 
} 

我知道後「如果(ID == R.id.action_reset)」所需的代碼去,但我已經試過我已經通過互聯網發現了幾個辦法,但沒有一次成功。

enter image description here

注: 請到https://github.com/tyrantgit/ExplosionField和考慮的例子。我需要知道如何通過按下按鈕重新繪製。

回答

1

我仍然困惑你的意思是destroy that view。重置視圖取決於您所做的更改。取決於您需要反轉更改。如果您已將可見性設置爲Gone,那麼現在您需要將其設置爲Visible

所以我通過了代碼。將以下代碼添加到您的代碼中。事情應該工作:

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    if (item.getItemId() == R.id.action_reset) { 
     View root = findViewById(R.id.root); 
     reset(root); 
     addListener(root); 
     mExplosionField.clear(); 
     return true; 
    } 
    return super.onOptionsItemSelected(item); 
} 

private void reset(View root) { 
    if (root instanceof ViewGroup) { 
     ViewGroup parent = (ViewGroup) root; 
     for (int i = 0; i < parent.getChildCount(); i++) { 
      reset(parent.getChildAt(i)); 
     } 
    } else { 
     root.setScaleX(1); 
     root.setScaleY(1); 
     root.setAlpha(1); 
    } 
} 

欲瞭解更多信息,請參閱完整的代碼在這裏:https://github.com/tyrantgit/ExplosionField/blob/master/app/src/main/java/tyrantgit/sample/MainActivity.java

+0

嗨,這裏消滅並不意味着物體破壞。如果你轉到上面提到的鏈接,你將會有更好的理解。此外,我已經嘗試了你所說的任何事情,不幸的是現在已經吸引了這種觀點 – SDG69

+0

我更新了我的答案。看看它。 – Henry

+0

這是完美的。順便說一句,我當時並沒有意識到它 - _o。怪異!無論如何,謝謝。 – SDG69

相關問題