我正在使用 android coverflow,它在大多数设备上都可以正常工作,但似乎在 Android 4.0.3 中,一旦你来回滑动,它就不会将中心图像放回中心。
他们仍然“卡住”并且处于错误的角度。
有没有人有类似的问题?什么可能导致这种行为?
所以附加图像上的中间图像应该居中而不是像原来那样倾斜。
我刚刚添加
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;
您在使用 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);
}
请让我知道是否有人对此有更好的解决方案。
我解决了这个代码
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();