【问题标题】:Animating display of items in ListView in AndroidAndroid中ListView中项目的动画显示
【发布时间】:2016-06-25 10:46:54
【问题描述】:

我有一个带有自定义适配器的列表视图。到目前为止,我已经实现了第一个“屏幕”上的功能。

现在,我想为每个项目添加一个详细信息选项卡,它会推动其下方的成员以获取空间。 如何为下推设置动画,使其具有平滑过渡?

【问题讨论】:

  • 您需要创建另一个活动/片段,该活动/片段的布局将包含项目详细信息的字段。实现在屏幕之间进行转换或用细节片段替换当前片段的点击功能。希望这足够清楚

标签: android android-layout listview android-studio android-animation


【解决方案1】:

在您的自定义适配器中,在 getView() 方法中,您可以为包含整行的视图设置 onClickListener。然后,您可以选择实现动画以在用户单击时显示/隐藏其他视图。

将视图向下滑动一段距离

view.animate().translationY(distance);

您可以稍后将视图滑回其原始位置,如下所示:

view.animate().translationY(0);

您还可以轻松组合多个动画。下面的动画会将 View 向下滑动高度并同时淡入:

// Prepare the View for the animation
view.setVisibility(View.VISIBLE);
view.setAlpha(0.0f);

// Start the animation
view.animate()
    .translationY(view.getHeight())
    .alpha(1.0f);

然后您可以淡出视图并将其滑回其原始位置。我们还设置了一个 AnimatorListener 以便在动画完成后将 View 的可见性设置回 GONE:

view.animate()
    .translationY(0)
    .alpha(0.0f)
    .setListener(new AnimatorListenerAdapter() {
        @Override
        public void onAnimationEnd(Animator animation) {
            super.onAnimationEnd(animation);
            view.setVisibility(View.GONE);
        }
    });

【讨论】:

    【解决方案2】:

    我认为你应该使用 ExpandableListView 而不是 ListView

    看这个教程:http://www.androidhive.info/2013/07/android-expandable-list-view-tutorial/

    希望对您有所帮助!

    【讨论】:

    • 如果你想要一个更干净的外观,你可以禁用它的一些 GUI 组件,例如:android:groupIndicator。
    【解决方案3】:

    您在 Drawable 文件夹中的 list_selector.xml 文件

        <?xml version="1.0" encoding="utf-8"?>
        <selector
            android:id="@+id/myselector"
            xmlns:android="http://schemas.android.com/apk/res/android">
          <item
              android:state_activated="false"
              android:drawable="#C9C9C9" />
    
        </selector>
    

    列表视图

    android:listSelector="@drawable/list_selector_drawer"

      <ListView
            android:id="@+id/left_drawer"
            android:layout_width="235dp"
            android:layout_height="match_parent"
            android:layout_gravity="start"
            android:background="#ffffff"
            android:choiceMode="singleChoice"
            android:divider="#d2d1d1"
            android:listSelector="@drawable/list_selector_drawer"
            android:dividerHeight="1dp"/>
    

    工作

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-09
      • 2020-04-06
      • 1970-01-01
      • 1970-01-01
      • 2015-02-01
      • 1970-01-01
      相关资源
      最近更新 更多