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