gpt4 book ai didi

java - View 中的可绘制对象被压扁

转载 作者:塔克拉玛干 更新时间:2023-11-02 21:17:28 25 4
gpt4 key购买 nike

问题与疑问:

我目前有一个 View 分页器,里面只有 2 个页面/ View ,它们水平相邻。

我的 View 是自定义 View ,它以低不透明度/alpha 值在其顶部绘制双色渐变和图像。

我发现当我在屏幕上滑动以从第一个 View /页面移动到第二个 View /页面或相反时,图像会被压扁。 我怎样才能阻止这种情况发生,并正常绘制它们?

示例:

图像显示第一个可见的 View ,pre-swipe右侧 图像显示了两个 View ,滑动中途

Normal view Squashed views, as I'm mid-way through swiping

代码:

我有一个我之前设置的 Drawable 变量,overlayImage,除了设置不透明度之外我没有做任何事情。

@Override
protected void onDraw(Canvas canvas) {
p.setShader(new LinearGradient(0, 0, 0, getHeight(), startColor, endColor, Shader.TileMode.MIRROR));
canvas.drawPaint(p);

//Pretty sure the mistake is around these two next lines
overlayImage.setBounds(canvas.getClipBounds());
overlayImage.draw(canvas);
}

最佳答案

其实我觉得是你的

overlayImage.setBounds(canvas.getClipBounds());

代码行。当您获得最左侧(在最右侧滑动) View 的剪辑边界时,它会获得可视区域的大小(即较小的收缩区域),因此图像被绘制到该收缩空间中。

您可能希望通过覆盖它的 View 的整体大小来设置边界,而不是裁剪边界。请改用 Canvas 的 getHeight() 和 getWidth() 并建立您自己的边界。

我实际上认为您真的应该在您的设置代码中只设置一次 overlayImage 边界。绘图代码根本不需要设置它,然后当 View 开始离开屏幕时,overlayImage 的绘图将自然地与绘图 Canvas 的其余部分一起移动。

关于java - View 中的可绘制对象被压扁,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15043037/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com