在Android中,為ExpandableListView添加動畫效果可以通過自定義適配器并在適配器的getGroupView()
和getChildView()
方法中實現。這里是一個簡單的例子來展示如何為ExpandableListView的分組項(group)和子項(child)添加動畫效果:
BaseExpandableListAdapter
:public class CustomExpandableListAdapter extends BaseExpandableListAdapter {
// ... 其他必要的方法實現
@Override
public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
// ... 初始化分組視圖(Group View)
// 添加動畫效果
animateView(convertView, isExpanded);
return convertView;
}
@Override
public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
// ... 初始化子項視圖(Child View)
// 添加動畫效果
animateView(convertView, isLastChild);
return convertView;
}
private void animateView(View view, boolean isExpanded) {
if (view != null) {
Animation animation;
if (isExpanded) {
// 當分組項展開時,執行展開動畫
animation = AnimationUtils.loadAnimation(context, R.anim.expand_animation);
} else {
// 當分組項折疊時,執行折疊動畫
animation = AnimationUtils.loadAnimation(context, R.anim.collapse_animation);
}
view.startAnimation(animation);
}
}
}
res/anim
目錄下創建兩個XML動畫文件,expand_animation.xml
和collapse_animation.xml
。這些文件定義了展開和折疊動畫的效果。expand_animation.xml
:
<?xml version="1.0" encoding="utf-8"?>
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="0.0"
android:toAlpha="1.0"
android:duration="300" />
<scale
android:fromXScale="1.0"
android:toXScale="1.0"
android:fromYScale="0.0"
android:toYScale="1.0"
android:pivotX="0%"
android:pivotY="0%"
android:duration="300" />
</set>
collapse_animation.xml
:
<set xmlns:android="http://schemas.android.com/apk/res/android">
<alpha
android:fromAlpha="1.0"
android:toAlpha="0.0"
android:duration="300" />
<scale
android:fromXScale="1.0"
android:toXScale="1.0"
android:fromYScale="1.0"
android:toYScale="0.0"
android:pivotX="0%"
android:pivotY="0%"
android:duration="300" />
</set>
ExpandableListView expandableListView = findViewById(R.id.expandable_list_view);
CustomExpandableListAdapter adapter = new CustomExpandableListAdapter();
expandableListView.setAdapter(adapter);
現在,當你展開或折疊ExpandableListView的分組項時,應該會看到動畫效果。你可以根據需要調整動畫文件中的參數以獲得所需的動畫效果。