“我怎么能?”;“向上滑动”;从屏幕底部查看android?

“我怎么能?”;“向上滑动”;从屏幕底部查看android?,android,animation,Android,Animation,我试图创建一个非常简单的向上滑动列表视图,当用户单击屏幕底部的按钮时,该视图就会显示出来。下面是它的外观: 以及一个完整的HTML/JS实现 我尝试使用RelativeLayout将列表定位在按钮下方,将整个列表放入包装器中,然后向上/向下设置动画(与上面的JSBin相同) 问题是,在开始时看不见的底部部分被某种方式剪掉了,即使我将其向上滑动。如果我最初显示列表的一部分,如下面的屏幕所示,则底部部分在向上移动时会被剪裁,并且仅显示最初可见的部分 制作此类动画的合适方法是什么? 编辑:经过简

我试图创建一个非常简单的向上滑动列表视图,当用户单击屏幕底部的按钮时,该视图就会显示出来。下面是它的外观:

以及一个完整的HTML/JS实现

我尝试使用
RelativeLayout
将列表定位在按钮下方,将整个列表放入包装器中,然后向上/向下设置动画(与上面的JSBin相同)

问题是,在开始时看不见的底部部分被某种方式剪掉了,即使我将其向上滑动。如果我最初显示列表的一部分,如下面的屏幕所示,则底部部分在向上移动时会被剪裁,并且仅显示最初可见的部分

制作此类动画的合适方法是什么?


编辑:经过简短讨论(在接受答案的评论中)后,我解决了这个问题,移除了动画零件周围的环绕
线性布局,我只是简单地更改了
列表视图的高度,它向上推按钮。

您正在寻找的动画将如下所示-

<translate xmlns:android="http://schemas.android.com/apk/res/android"
    android:duration="@android:integer/config_longAnimTime"
    android:fromYDelta="100%p"
    android:toYDelta="0" />

您的问题可能来自ListView如何进行自己的布局,基本上它适合屏幕上可用的大小并绘制该部分,因为您创建的ListView没有高度,或者高度非常小,它保持的大小不变。您可以通过两种方法解决此问题:

  • 将ListView替换为一个简单的LinearLayout-填充所有 如果您列出了项目,如果您没有太多的项目,我会这样做 列表-然后是列表视图相对于简单线性布局的优势 可以忽略不计
  • 使用ValueAnimator并更新对象的“位置和高度”属性 设置动画时查看列表
  • 根据我在评论中提到的帖子改编,ValueAnimator应该是这样的:

    ValueAnimator va = ValueAnimator.ofInt(0, height);
        va.setDuration(700);
        va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            public void onAnimationUpdate(ValueAnimator animation) {
                Integer value = (Integer) animation.getAnimatedValue();
                v.getLayoutParams().height = value.intValue();
                v.setTranslationY(-value.intValue());
                v.requestLayout();
            }
        });
    
    • 我不确定使用setTranslationY是否是解决此问题的正确方法,或者您应该使用负marginTop值(取决于布局)

    我试过做
    var animation=newtranslateanimation(0,0,-600,0);动画。持续时间=1000;animation.FillAfter=true,这是否实现了相同的功能?因为这样视图的底部仍然被剪裁。嗯,你能发布你的布局xml吗?我猜有一个家长视图剪辑了你的相亲照片。您可以尝试将
    setClipChildren
    设置为false。添加了问题底部的链接我已经在使用TransitionAnimator进行移动,有没有办法将其与ValueAnimator合并以同时运行这两个动画?我只会使用ValueAnimator,查看此线程以获取示例:我想我现在理解了这个问题。我已将我的应用程序更改为仅使用
    ValueAnimator
    ,但即使我将
    ListView
    heighth
    设置为某个愚蠢的任意高数字(如10000),它也不会改变其高度,但会改变Y位置。我将加入@ssanto的请求以查看布局,同时,顶部布局高度是否设置为与问题底部的链接相匹配。
    ValueAnimator va = ValueAnimator.ofInt(0, height);
        va.setDuration(700);
        va.addUpdateListener(new ValueAnimator.AnimatorUpdateListener() {
            public void onAnimationUpdate(ValueAnimator animation) {
                Integer value = (Integer) animation.getAnimatedValue();
                v.getLayoutParams().height = value.intValue();
                v.setTranslationY(-value.intValue());
                v.requestLayout();
            }
        });