Drawable in View被压扁

Seb*_*hec 6 java android drawable android-view android-viewpager

问题与疑问:

我目前有一个视图寻呼机,里面只有2页/视图,它们水平相邻.

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

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

例:

图像显示,是可见的,所述第一视图预滑动 ; 在右边的图像显示了两种观点,中途刷卡.

普通视图 我正在通过刷卡的中途观看

码:

我有一个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);
}
Run Code Online (Sandbox Code Playgroud)

tru*_*cks 2

我实际上认为它在你的

overlayImage.setBounds(canvas.getClipBounds());
Run Code Online (Sandbox Code Playgroud)

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

您可能希望通过覆盖的视图的整体大小来设置边界,而不是剪切的边界。使用画布的 getHeight() 和 getWidth() 并建立您自己的边界。

实际上,我认为您确实应该在设置代码中仅设置overlayImage 边界一次。绘制代码根本不需要进行设置,那么当视图开始离开屏幕时,overlayImage 的绘制将自然地与绘图画布的其余部分一起移动。