默認顯示標題,點擊按鈕/區域,詳細描述向下滑出展開;再次點擊向上收起。類似設置項目、FAQ 列表、卡片展開。
// 布局
// 代碼
View content = findViewById(R.id.tv_content);
title.setOnClickListener(v -> {
if (content.getVisibility() == View.GONE) {
content.setVisibility(View.VISIBLE);
// 可選:滑動動畫
content.setAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_down));
} else {
content.setAnimation(AnimationUtils.loadAnimation(this, R.anim.slide_up));
content.postDelayed(() -> content.setVisibility(View.GONE), 300);
}
});
分組為標題,子項為詳情,自帶展開/收起指示器,適配器實現簡單。
CSDN 經典教程:Android 滑動展開收起動畫完整實現
| 場景 | 推薦方案 |
|---|---|
| 單個卡片/項目 | 方案一 或 三 |
| 列表多項獨立展開 | 方案二 或 RecyclerView + 方案一 |
| 複雜交互/嵌套動畫 | 方案三 (MotionLayout) |
核心思想:**狀態驅動 UI**,用 Visibility + 動畫 或 MotionLayout 狀態機實現流暢展開收起。