Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.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
Android 当用户向下滚动时,如何将滚动上的alpha值从0.2增加到1?_Android_Scrollview - Fatal编程技术网

Android 当用户向下滚动时,如何将滚动上的alpha值从0.2增加到1?

Android 当用户向下滚动时,如何将滚动上的alpha值从0.2增加到1?,android,scrollview,Android,Scrollview,我想在滚动视图上方显示一幅图像,用户向下滚动的次数越多,图像越清晰可见。理想情况下,我希望它的初始alpha值为0.2,当滚动视图完全滚动到底部时,alpha值增加到1 我知道我可以使用监听器: view.findViewById(R.id.my_scroll_view).setOnScrollChangeListener(new android.view.View.OnScrollChangeListener() { @Override publ

我想在
滚动视图
上方显示一幅图像,用户向下滚动的次数越多,图像越清晰可见。理想情况下,我希望它的初始alpha值为0.2,当滚动视图完全滚动到底部时,alpha值增加到1

我知道我可以使用监听器:

view.findViewById(R.id.my_scroll_view).setOnScrollChangeListener(new android.view.View.OnScrollChangeListener() {
            @Override
            public void onScrollChange(android.view.View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
                myImageButton.setAlpha(/* how to get this value? */);
            }
});
但是我不知道如何准确地获取
ScrollView
的高度,并将其与我在侦听器中得到的
scrollX
值进行比较。更重要的是,当我尝试在
滚动视图的底部滚动时,以下是我获取的参数:

现在检索视图(
v
)高度:

我不明白这些结果是如何关联的


感谢您的帮助。

为了获得alpha的正确值,我们需要将当前滚动值除以最大滚动值

有人会认为
ScrollView.getMaxScrollAmount()
会起作用,但它似乎没有输出我们需要的值。我们真正需要的是ScrollView子视图的视图高度,减去它的顶部和底部填充

所以当前滚动值除以它就是我们的计算alpha。然后我们只需将计算的alpha设置为
0.2f
,如果它小于这个值

以下代码适用于我:

view.findViewById(R.id.my_scroll_view).setOnScrollChangeListener(new View.OnScrollChangeListener() {
    @Override
    public void onScrollChange(View v, int scrollX, int scrollY, int oldScrollX, int oldScrollY) {
        View child = scrollView.getChildAt(0);
        int maxScroll = Math.max(0, child.getHeight() - (scrollView.getHeight() - scrollView.getPaddingBottom() - scrollView.getPaddingTop()));

        float calculatedAlpha = (float)scrollY / (float)maxScroll;
        if (calculatedAlpha < 0.2f) {
            calculatedAlpha = 0.2f;
        }

        myImageButton.setAlpha(calculatedAlpha);
    }
});
view.findViewById(R.id.my_scroll_view).setOnScrollChangeListener(新视图.OnScrollChangeListener(){
@凌驾
public void onScrollChange(视图v、int-scrollX、int-scrollY、int-oldScrollX、int-oldScrollY){
View child=scrollView.getChildAt(0);
int maxScroll=Math.max(0,child.getHeight()-(scrollView.getHeight()-scrollView.getPaddingBottom()-scrollView.getPaddingTop());
浮点计算alpha=(浮点)滚动/(浮点)最大滚动;
如果(计算的alpha<0.2f){
计算alpha=0.2f;
}
myImageButton.setAlpha(calculatedAlpha);
}
});