想要實現類似蘑菇街、美麗說的側滑效果:點擊按鈕後,父 Activity 被推開 20%,子 Activity 佔 80% 並從側邊滑入,兩者同時可見。這其實不需要兩個 Activity,用單一 Activity 內嵌兩個自定義 View 配合動畫即可完美實現。
FrameLayout 或 RelativeLayout,放置兩個同級 View:leftMenuView(父內容)與 mainContentView(子內容)。mainContentView 佔滿屏,leftMenuView 寬度為屏寬 20% 並置於屏左側可見區域,或完全隱藏在負座標。mainContentView 執行平移動畫(TranslationX 從 0 到屏寬 80%),同時 leftMenuView 保持靜止或微動,形成「推開」視覺。// 動畫示例
ObjectAnimator animator = ObjectAnimator.ofFloat(mainContentView, "translationX", 0, screenWidth * 0.8f);
animator.setDuration(300);
animator.start();
ViewDragHelper 實現更流暢的跟手拖拽。DrawerLayout 或 SlidingPaneLayout 等官方組件簡化開發。單 Activity 多 View 方案不僅避免了 Activity 切換開銷,還能輕松實現複雜交互,是側滑菜單的最佳實踐。