は、誰がどのように次のトレースを修正する教えてもらえます:ここでトレース:requestLayout()が不適切に呼び出されましたか?
W/View (16810): requestLayout() improperly called by
theme.effects.TopCenterImageView{41dc73f0 V.ED.... ........
0,0-480,690 #7f060066 app:id/normal_image} during second
layout pass: posting in next frame
がTopCenterImageViewのコードです:
public class TopCenterImageView extends ImageView {
public TopCenterImageView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
setScaleType(ScaleType.MATRIX);
}
public TopCenterImageView(Context context, AttributeSet attrs) {
super(context, attrs);
setScaleType(ScaleType.MATRIX);
}
public TopCenterImageView(Context context) {
super(context);
setScaleType(ScaleType.MATRIX);
}
@Override
protected boolean setFrame(int l, int t, int r, int b) {
if (getDrawable() == null) {
return super.setFrame(l, t, r, b);
}
Matrix matrix = getImageMatrix();
float scaleFactor = getWidth()/(float) getDrawable().getIntrinsicWidth();
matrix.setScale(scaleFactor, scaleFactor, 0, 0);
setImageMatrix(matrix);
return super.setFrame(l, t, r, b);
}
}
私はちょうど今日、同じ問題に遭遇し、それがことが表示されますログ内のビューは原因ではありません。 ValueAnimatorや別のAnimatorクラスをコード内で使用しますか? – Kai
私はしません。すべてのコードは、ユーザーがスクロールするときにアルファを設定しながら、イメージをフェッチし、ブラーして元のイメージに置きます。 – Aashir
ええと...まだ問題が残っている場合は、UIスレッド関連のコードをチェックするだけです。私のコードの問題は、私が 'ValueAnimator.start()'を連続して複数回呼び出したことでした。そして、私がValueAnimatorからUI関連のコードを削除したとしても、** requestLayout()が不適切に呼び出されていることに気づいています。ああ、それは4.3デバイスでも起こるようです。 – Kai