Kann mir jemand sagen, wie die folgende Spur zu beheben:Trace: requestLayout() falsch aufgerufen?
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
Hier ist der Code für 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);
}
}
ich das gleiche Problem heute nur festgestellt und es scheint, dass Die Ansicht im Protokoll ist nicht der Übeltäter. Verwenden Sie in Ihrem Code ValueAnimator oder eine andere Animator-Klasse? – Kai
Ich nicht. Der ganze Code ist einfach so, dass er ein Bild abruft, es verwischt und es über das Original legt, während das Alpha eingestellt wird, während der Benutzer scrollt. – Aashir
Hmm ... wenn es immer noch ein Problem für dich ist, denke ich, das einzige, was noch zu tun ist, ist UI-Thread-bezogenen Code zu überprüfen. Das Problem mit meinem Code war, dass ich 'ValueAnimator.start()' mehrere Male in schneller Folge aufgerufen hatte. Und das Seltsamste ist, dass ich immer noch den Fehler ** "requestLayout() falsch aufgerufen ..." ** sehen würde, selbst wenn ich einen mit der Benutzeroberfläche verbundenen Code aus ValueAnimator entfernt hätte. Oh, und es scheint nur auf 4.3 Geräten zu passieren. – Kai