安卓4.0.3三星Galaxy S2上Coverflow问题

6
我正在使用Android Coverflow,在大多数设备上都能正常工作,但在Android 4.0.3上,当您来回滑动时,似乎无法将中心图像放回中心位置。它们保持“卡住”并处于错误的角度下。是否有人遇到过类似的问题?这种行为可能是什么原因引起的?因此,所附图像中的中间图像应该居中,并且不应该倾斜。
3个回答

17
我刚刚添加了。
child.invalidate() 

之前

final int childCenter = getCenterOfView(child); in getChildStaticTransformation(View child, Transformation t) 

所以它变成了:
protected boolean getChildStaticTransformation(View child, Transformation t) {

    child.invalidate();
    final int childCenter = getCenterOfView(child);
    final int childWidth = child.getWidth();
    int rotationAngle = 0;

这也解决了非旋转图像视图的问题。谢谢。 - Gunhan
希望我可以多次点赞。快速解决方案 (y) 第一次搜索,第一个搜索结果和第一次代码编辑。成功了。 - hasan
有没有比调用“invalidate()”更好的方法。在我的Coverflow中已经有了一堆图片,因此它正在影响我的性能。 - geri-m

3

您是否正在使用Neil Davies Coverflow Widget V2?

如果是,我找到了问题所在。如果不是,很抱歉,我无法帮助您。

问题出现在函数getCenterOfView中。更准确地说,这与view.getLeft()有关。 <-- 如果有人知道为什么4.0后会有差异,请告诉我。

从view.getLeft()返回的值每次都不同。因此,这将影响另一个函数getChildStaticTransformation,它无法找到哪个imageView是中心。

我的解决方案是一个临时补救措施,即为其提供一个范围来检测其中心。

if (childCenter <= mCoveflowCenter + 125
            && childCenter >= mCoveflowCenter - 125) {
        transformImageBitmap((ImageView) child, t, 0);
}

请让我知道如果有更好的解决方案。

这是尼尔的coverflow小部件。我没有比较代码,所以我不确定它是V2还是V1 :) 我会看一下的,但据我记得,我已经试图通过类似于“扩展”中心来修复它,以便在左右两侧各取+-5像素,因此它变得不太平滑,但工作效果更好。也会检查这个。谢谢。 - Balkyto
我也遇到了同样的问题,并且第一次也使用了范围作为解决方法,但是存在不良居中情况 - 取决于范围值,因此中间的子项更靠近其他子项之一,并且在滚动后可能会重叠。现在我正在使用Shantur建议的无效化方法,它运行良好(我的coverflow中只有几个项目,因此无效化不会影响性能)。 - Hruskozrout

2
我按照以下代码解决了问题。
private int offsetChildrenLeftAndRight() {
    int offset = 0;
    for (int i = getChildCount() - 1; i >= 0; i--) {

        getChildAt(i).offsetLeftAndRight(offset);

        if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.JELLY_BEAN)
            getChildAt(i).invalidate();
    }
    return offset;
}


final int childCenter = getCenterOfView(child) + offsetChildrenLeftAndRight();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接