2015-12-01 106 views
1

我試圖建立一個類似於Flipboard的搜索欄。該搜索欄從工具欄下方動畫以覆蓋工具欄。這GIF更好地顯示它比我能解釋一下:動畫搜索欄到工具欄android

flipboard-search-animate

有誰知道這是標準的材料設計?如果是這樣,我可以使用任何庫或標準小部件來做到這一點? Soundcloud也是這麼做的,只是想問一下是否有任何東西已經存在。如果沒有,我只需要自己實現它。

謝謝!

+0

查看此圖書館:https://github.com/lapism/SearchView – notdrone

+0

@clu有一個解決方案呢? – Tinashe

+0

是的:)。請參閱下面的答案。 – clu

回答

0

爲了解決這個問題,我建議您考慮一下android.support.v4.app.ActivityOptionsCompat.makeSceneTransitionAnimation()

以下是我記得的代碼片段:

我有ActivityA其中包含一個EditTextA。 該EditTextA具有View.OnClickListener

View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      ActivityB.launch(getActivity(), view); 
     } 
} 

其中當被調用時調用一個靜態方法:ActivityB.launch(Activity a, View transitionView)

public static void launch(Activity activity, View transitionView) { 
    ActivityOptionsCompat options = ActivityOptionsCompat.makeSceneTransitionAnimation(
      activity, transitionView, EXTRA_TRANSITION_VIEW); 
    Intent intent = new Intent(activity, ActivityB.class); 
    ActivityCompat.startActivity(activity, intent, options.toBundle()); 
} 

上面的代碼基本上是創建一個Intent將推出ActivityB。那Intent也包括Bundleoptions.toBundle()),它有一堆東西,包括從ActivityA轉換到ActivityB的視圖。在我的情況下,這是EditTextA

ActivityB.onCreate()我們需要做的就是將該視圖「連接」到正在轉換到的新視圖。因此,在我的情況下,EditTextA正在轉換爲另一個EditTextB,它生活在ActivityB

ActivityB.onCreate() { 
    .... 
    mEditTextB = (EditText) findByViewId(...); 
    ViewCompat.setTransitionName(mEditTextB, EXTRA_TRANSITION_VIEW); 
} 

如果我記得一切正確,應該是:)。