Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/376.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 控制setElevation方法的出现时间_Java_Android - Fatal编程技术网

Java 控制setElevation方法的出现时间

Java 控制setElevation方法的出现时间,java,android,Java,Android,我开始在应用程序中使用工具栏 我需要当我打开我的活动时,我的工具栏(位于顶部)的标高为0,给人一种没有工具栏的印象,当使用滚动工具栏屏幕时,它的标高为3,以便显示工具栏与其余元素的划分,我通过以下代码实现了这一点: nScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() { @Override public void onScrollChange(Nes

我开始在应用程序中使用工具栏

我需要当我打开我的活动时,我的工具栏(位于顶部)的标高为0,给人一种没有工具栏的印象,当使用滚动工具栏屏幕时,它的标高为3,以便显示工具栏与其余元素的划分,我通过以下代码实现了这一点:

nScrollView.setOnScrollChangeListener(new NestedScrollView.OnScrollChangeListener() {
        @Override
        public void onScrollChange(NestedScrollView v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
            if (scrollY != 0){
                toolbar.setBackgroundColor(Color.parseColor("#fcfcfc"));
                toolbar.setElevation(3);
            } else {
                toolbar.setBackgroundColor(Color.parseColor("#fafafa"));
                toolbar.setElevation(0);
            }
        }
    });
这正是我所需要的(setElevation()创建一个阴影来显示我的工具栏和其余元素之间的划分),但是setElevation()方法看起来非常快,并且在美学上看起来很糟糕

我需要在1秒内申请setElevation,可以吗?我该怎么做呢

我想澄清的是,我不希望延迟开始应用setElevation,我需要的是setElevation的持续时间为1秒,这样它就不会突然出现。我自己测试了一下,效果很好:

首先为工具栏的立面创建选择器xml文件,并将其放置在animator文件夹中(注意:不是动画文件夹):

最后为您的scrollview/recyclerview添加以下内容:

        scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
            @Override
            public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
                toolbar.setSelected(scrollView.canScrollVertically(-1));
            }
        });

非常感谢,这正是我所需要的
android:stateListAnimator="@animator/toolbar_elevation"
        scrollView.setOnScrollChangeListener(new View.OnScrollChangeListener() {
            @Override
            public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
                toolbar.setSelected(scrollView.canScrollVertically(-1));
            }
        });