我基本上有兩個問題,可能有單獨的解決方案。Android材質設計:使列表中的按鈕從左至右彈出,並動畫按鈕移動
我附上什麼我談論的一些截圖。當然,這些圖標不被認真對待:https://goo.gl/photos/zrHtt1BrmSdjFEMM8
___________________________ FIRST _____________________________
我有與在該在XML中指定的底部的灰色條(棒A)的應用程序。酒吧中間有一個按鈕A(拼圖)。 在應用程序中按下按鈕A時,我想讓該按鈕滑到右側並粘到屏幕的右側。此時,酒吧A的其餘部分(充滿其他東西)應該消失,變黑,並填充新的按鈕(酒吧B:按鈕A在右邊,並在其左邊的黑色酒吧充滿了按鈕)。 在xml中,我有一個FrameLayout,裏面有兩個組件,兩個都是完全指定的,然後在代碼中,我可以在使第二個可見或不可見的情況之間切換。因此,將按鈕向右移動後,會變成xml中的按鈕B. 有關動畫的Android開發者頁面描述瞭如何在兩個活動之間共享元素,但是如何在xml中的兩個元素之間共享同一活動中的元素?在動畫結束之後,我如何告訴動畫按鈕A實際上與按鈕B相同?
我目前的解決方案是唯一的移動使用TranslateAnimation按鈕,一旦它已到達B按鈕的位置,我做條B可見。但這並不覺得優雅,我覺得必須有一種更好的方式來連接按鈕A和按鈕B,不僅可視,而且可以編程。有沒有辦法?
___________________________ SECOND________________________________
按鈕後已到達按鈕B,從而製成巴B可見,我現在想的黑條(的心)內的按鈕,彈出一個接一個地從左邊到後沒錯,類似他們的谷歌開發者指南中做到:http://material-design.storage.googleapis.com/publish/material_v_4/material_ext_publish/0B08MbvYZK1iNTGRLb2Zud2RUNFE/animation-meaningfultransitions-hierarchicaltiming-4do_large_xhdpi.webm
什麼是那種動畫的叫什麼?我不知道要搜索什麼。一些代碼指針也會很好。
編輯:我現在想通了一些。再次,我不認爲這是最優雅的解決方案,我會很高興提示如何更好地做到這一點。
當添加欣賞到的LinearLayout,我遍歷我想補充,並添加動畫,以他們的元素。我爲每個元素增加一個「延遲」變量,以延遲動畫的開始,以使它們從左到右出現。以下是代碼片段:
private void addLinearLayoutViews() {
LinearLayout layout = (LinearLayout) findViewById(R.id.linear_layout);
layout.removeAllViewsInLayout();
long delay = 0;
for (int i = 0; i < ITEMS.length; ++i) {
ImageView v; // fill with stuff
v.setVisibility(View.INVISIBLE);
PropertyValuesHolder pvhX = PropertyValuesHolder.ofFloat("scaleX", 0.f, 1.f);
PropertyValuesHolder pvhY = PropertyValuesHolder.ofFloat("scaleY", 0.f, 1.f);
PropertyValuesHolder pvhA = PropertyValuesHolder.ofFloat("alpha", 0.f, 1.f);
ObjectAnimator animator = ObjectAnimator.ofPropertyValuesHolder(v, pvhX, pvhY, pvhA);
animator.setDuration(500);
animator.addListener(new AnimatorListenerAdapter() {
public void onAnimationStart(Animator animation) {
v.setVisibility(View.VISIBLE);
}
});
animator.setStartDelay(delay);
animator.start();
delay +=15;
layout.addView(v);
}
}
提前感謝這麼多!