0

當前,我在https://stackoverflow.com/a/29748810/72437中提供了一些建議,以便在進入上下文動作模式時更改狀態欄顏色。如何確保顏色變化同時發生在狀態欄和上下文動作模擬工具欄上

但是,從以下視頻https://www.youtube.com/watch?v=2Ra56_eh7uk可以看出,顏色變化總是發生在狀態欄上,只有在工具欄上的顏色變化纔會出現。

有沒有什麼辦法可以讓狀態欄和工具欄上的顏色同時變化。

@SuppressLint("NewApi") 
private class ModeCallback implements ListView.MultiChoiceModeListener { 

    public boolean onCreateActionMode(android.view.ActionMode mode, 
      android.view.Menu menu) { 
     ... 

     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      Activity activity = getActivity(); 
      if (activity != null) { 
       activity.getWindow().setStatusBarColor(actionModeStatusBarColor); 
      } 
     } 

     return true; 
    } 

    public boolean onPrepareActionMode(android.view.ActionMode mode, android.view.Menu menu) { 
     return true; 
    } 

    public boolean onActionItemClicked(android.view.ActionMode mode, android.view.MenuItem item) { 
     switch (item.getItemId()) { 
      .... 
     } 

     return false; 
    } 

    public void onDestroyActionMode(android.view.ActionMode mode) { 
     if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { 
      Activity activity = getActivity(); 
      if (activity != null) { 
       activity.getWindow().setStatusBarColor(colorPrimaryDark); 
      } 
     } 
    } 
} 

public void onActivityCreated(Bundle savedInstanceState) { 
    super.onActivityCreated(savedInstanceState); 

    if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.HONEYCOMB) { 
     this.getListView().setChoiceMode(ListView.CHOICE_MODE_MULTIPLE_MODAL); 
     this.getListView().setMultiChoiceModeListener(new ModeCallback()); 
     ... 

回答

2

這是因爲引起有動畫用於切換在Toolbar視圖用於正常顯示和上下文顯示。您看到它,因爲在切換狀態欄顏色時沒有應用動畫。

我在android源代碼ActionBar中挖掘實現使用500秒在上下文視圖和普通視圖之間切換。有關android源文件中的動畫持續時間,請參閱this

也許你需要執行ValueAnimatorArgbEvaluatior,它會將狀態欄的顏色變化動畫化。在銷燬ActionMode時運行此動畫。持續時間應該是500秒或config_longAnimTime

我希望這會有所幫助。 :)

相關問題