我正在尝试在ExpandableListView上添加动画

问题描述 投票:0回答:1

我正在使用简单的ExpandableListView,并且当一个组扩展时我需要添加动画,但它应该关闭已经扩展的任何其他组。

在添加animateLayoutChanges =“ true”之后,第一个展开的组显示了淡入淡出效果,但仅在第一个组中发生,这是我至少可以保持该淡入淡出的任何方式,以便至少可以算作一个简单的动画。

Main.xml

<ExpandableListView
            android:id="@+id/labExpandList"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:animateLayoutChanges="true"
            android:animationCache="true" />

list.xml

<RelativeLayout
        xmlns:android="http://schemas.android.com/apk/res/android"

        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:orientation="vertical"
        android:paddingTop="10dp"
        android:paddingBottom="10dp">

        <TextView
            android:id="@+id/labFLetter"
            android:layout_width="40dp"
            android:layout_height="40dp"
            android:layout_marginBottom="10dp"
            android:background="@drawable/ic_circle"
            android:gravity="center"
            android:text="J"
            android:textColor="@color/colorPrimaryDark"
            android:textSize="24sp"
            android:textStyle="bold" />

    <TextView
        android:id="@+id/labName"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginStart="10dp"
        android:layout_marginLeft="10dp"
        android:layout_toEndOf="@+id/labFLetter"
        android:layout_toRightOf="@id/labFLetter"
        android:text="Rose - Gardener - 4.6*"
        android:textColor="@color/colorPrimaryDark"
        android:textSize="16sp"
        android:textStyle="bold" />

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@id/labName"
            android:layout_marginLeft="10dp"
            android:layout_marginTop="7dp"
            android:layout_toRightOf="@id/labFLetter"
            android:gravity="center_vertical"
            android:orientation="horizontal">

            <TextView
                android:id="@+id/recommendText"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_alignParentStart="true"
                android:layout_alignParentLeft="true"
                android:layout_gravity="start"
                android:layout_marginRight="5dp"
                android:text="@string/added_by"
                android:textColor="@color/fontColor"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/lab_last_person_recommended"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="start"
                android:layout_toEndOf="@id/recommendText"
                android:layout_toRightOf="@id/recommendText"
                android:text="John Wick"
                android:textColor="@color/fontColor"
                android:textSize="12sp" />

            <TextView
                android:id="@+id/lab_total_users_shared"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_gravity="start"
                android:layout_marginStart="5dp"
                android:layout_marginLeft="5dp"
                android:layout_marginTop="3dp"
                android:layout_toEndOf="@id/lab_last_person_recommended"
                android:layout_toRightOf="@id/lab_last_person_recommended"
                android:autoLink="all"
                android:linksClickable="false"
                android:selectAllOnFocus="false"
                android:text="+6 Others"
                android:textColor="@color/fontColor"
                android:textSize="10sp" />

            <View
                android:layout_width="2dp"
                android:layout_height="15dp"
                android:layout_marginStart="5dp"
                android:layout_marginLeft="5dp"
                android:layout_toEndOf="@id/lab_total_users_shared"
                android:layout_toRightOf="@id/lab_total_users_shared"
                android:background="@android:color/darker_gray" />

            <TextView
                android:id="@+id/lab_user_occupation"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginStart="12dp"
                android:layout_marginLeft="12dp"
                android:layout_toRightOf="@id/lab_total_users_shared"
                android:gravity="start"
                android:text="Photographer"
                android:textColor="@color/fontColor"
                android:textSize="12sp" />

        </RelativeLayout>

    </RelativeLayout>

sub_list.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/animate_lab_child"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:alpha="1"
    android:animateLayoutChanges="true"
    android:orientation="horizontal"
    android:padding="10dp">

    <ImageButton
        android:id="@+id/labCallBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="5dp"
        android:layout_marginRight="5dp"
        android:layout_weight="1"
        android:background="@color/colorPrimary"
        android:contentDescription="Call"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        app:srcCompat="@drawable/phone_black" />

    <ImageButton
        android:id="@+id/labSmsBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="5dp"
        android:layout_marginRight="5dp"
        android:layout_weight="1"
        android:background="@color/colorPrimary"
        android:contentDescription="SMS"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        app:srcCompat="@drawable/chat" />

    <ImageButton
        android:id="@+id/labWhatsappBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_marginEnd="5dp"
        android:layout_marginRight="5dp"
        android:layout_weight="1"
        android:background="@color/colorPrimary"
        android:contentDescription="Whatsapp"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        app:srcCompat="@drawable/ic_whatsapp" />

    <ImageButton
        android:id="@+id/labInfoBtn"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_weight="1"
        android:background="@color/colorPrimary"
        android:contentDescription="Info"
        android:paddingTop="10dp"
        android:paddingBottom="10dp"
        app:srcCompat="@drawable/info" />

</LinearLayout>

可扩展列表适配器

public class ExpandableListAdapter extends BaseExpandableListAdapter {
    private Context context;
    private List<String> listDataHeader;
    private HashMap<String,List<String>> listHashMap;
    private Activity activity;

    public ExpandableListAdapter(Context context, List<String> listDataHeader, HashMap<String, List<String>> listHashMap, Activity activity) {
        this.context = context;
        this.listDataHeader = listDataHeader;
        this.listHashMap = listHashMap;
        this.activity = activity;
    }

    @Override
    public int getGroupCount() {
        return listDataHeader.size();
    }

    @Override
    public int getChildrenCount(int groupPosition) {
        return 1;
//        return listHashMap.get(listDataHeader.get(groupPosition)).size();
    }

    @Override
    public Object getGroup(int groupPosition) {
        return listDataHeader.get(groupPosition);
    }

    @Override
    public Object getChild(int groupPosition, int childPosition) {
        return listHashMap.get(listDataHeader.get(groupPosition)).get(childPosition);
    }

    @Override
    public long getGroupId(int groupPosition) {
        return groupPosition;
    }

    @Override
    public long getChildId(int groupPosition, int childPosition) {
        return childPosition;
    }

    @Override
    public boolean hasStableIds() {
        return false;
    }

    @Override
    public View getGroupView(int groupPosition, boolean isExpanded, View convertView, ViewGroup parent) {
        String contactName = (String)getGroup(groupPosition);
        if (convertView == null){
            LayoutInflater inflater = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.lab_list_item,null);
        }
        TextView labContactName = (TextView)convertView.findViewById(R.id.labName);
        TextView labMainLetter = (TextView)convertView.findViewById(R.id.labFLetter);
        TextView lablastPersonShared = (TextView)convertView.findViewById(R.id.lab_last_person_recommended);
        TextView labTotalUsersShared = (TextView)convertView.findViewById(R.id.lab_total_users_shared);
        labTotalUsersShared.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                AlertDialog.Builder sBuilder = new AlertDialog.Builder(activity);
                View labShareUserView = activity.getLayoutInflater().inflate(R.layout.nof_users_recommed_modal, null);

                ListView uR_List = (ListView)labShareUserView.findViewById(R.id.user_recommended);
                UAdded_Adapter ur_adapter = new UAdded_Adapter();
                uR_List.setAdapter(ur_adapter);

                sBuilder.setView(labShareUserView);
                final AlertDialog  dialog = sBuilder.create();
                dialog.show();
            }
        });
        labContactName.setText(contactName);
        return convertView;
    }

    @Override
    public View getChildView(int groupPosition, int childPosition, boolean isLastChild, View convertView, ViewGroup parent) {
        if (convertView == null){
            LayoutInflater inflater = (LayoutInflater)this.context.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            convertView = inflater.inflate(R.layout.lab_list_item_child,null);
        }
        LinearLayout animate_lab_child = (LinearLayout)convertView.findViewById(R.id.animate_lab_child);
        ImageButton call = (ImageButton)convertView.findViewById(R.id.labCallBtn);
        ImageButton sms = (ImageButton)convertView.findViewById(R.id.labSmsBtn);
        ImageButton whatsapp = (ImageButton)convertView.findViewById(R.id.labWhatsappBtn);
        ImageButton info = (ImageButton)convertView.findViewById(R.id.labInfoBtn);

        info.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent = new Intent(activity,lab_user_details.class);
                activity.startActivity(intent);
            }
        });

//        convertView.setVisibility(View.GONE);
//        animate_lab_child.setAlpha(0f);
//        convertView.setVisibility(View.VISIBLE);

        // Animate the content view to 100% opacity, and clear any animation
        // listener set on the view.
//        animate_lab_child.animate()
//                .alpha(1)
//                .setDuration(2000)
//                .setListener(null);
        return convertView;
    }

    @Override
    public boolean isChildSelectable(int groupPosition, int childPosition) {
        return false;
    }

    class UAdded_Adapter extends BaseAdapter{

        @Override
        public int getCount() {
            return 6;
        }

        @Override
        public Object getItem(int position) {
            return null;
        }

        @Override
        public long getItemId(int position) {
            return 0;
        }

        @Override
        public View getView(int position, View convertView, ViewGroup parent) {

            convertView = activity.getLayoutInflater().inflate(R.layout.common_list_item,null);

            TextView uRName = (TextView)convertView.findViewById(R.id.comName);
            TextView uRFLetter = (TextView)convertView.findViewById(R.id.comFLetter);

            return convertView;
        }
    }
}
android expandablelistview
1个回答
0
投票
© www.soinside.com 2019 - 2024. All rights reserved.