私は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 に影響を与え、どのイメージビューが中心であるかを見つけることができません。
私の解決策である汚い修正は、その中心を検出するための範囲を与えることです。
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();