Ich habe eine Logo-Ansicht, die ein Vollbild-Fragment mit einzelnen ImageView
ist. Ich muss einige Operationen durchführen, nachdem das Logo vollständig sichtbar ist.onGlobalLayout unterscheidet zwischen verschiedenen Aufrufen
folgenden Code wird verwendet, um die besondere Aufgabe aufzurufen
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
ImageView logoImageMaster = new ImageView(getContext());
//logoImageMaster.setImageResource(resID); //even after removing this, i am getting the callback twice
try {
// get input stream
InputStream ims = getActivity().getAssets().open("product_logo.png");
// load image as Drawable
Drawable d = Drawable.createFromStream(ims, null);
// set image to ImageView
logoImageMaster.setImageDrawable(d);
}
catch(IOException ex) {
}
logoImageMaster.getViewTreeObserver().addOnGlobalLayoutListener(new ViewTreeObserver.OnGlobalLayoutListener() {
@Override
public void onGlobalLayout() { //FIXME get called twice. Check this out, no info to distinguish first from second
// Log.e("PANEL", "onGlobalLayout of Logo IV ---------------------------------");
activityInterface.doSpecialLogic();
}
});
return logoImageMaster;
}
Mein genaue Problem ist, ist onGlobalLayout
zweimal für diese Ansicht Hierarchie genannt.
Ich weiß, dass in von View.java
aufgerufen wird, daher wird dies erwartet.
Für meinen Anwendungsfall von Alleinerziehende mit Einzel Kind Ansicht, mag ich die Ansicht unterscheiden Attribute, so dass doSpecialLogic
einmal aufgerufen wird [onGlobalLayout
wird zweimal genannt], nachdem das Logobild vollständig sichtbar gemacht wird. Bitte schlagen Sie einige Ideen vor.
Hallo, ich bekomme immer noch zweimal, jetzt ich nur ein einziges Mal gesetzt, bitte sehen Sie die Updates auf die Frage – nmxprime
Nein, ich bin nicht die Sicht in 'doSpecialLogic' – nmxprime
und wie die Dokumente onGlobalLayout =" Callback-Methode zu sein Wird aufgerufen, wenn der globale Layout-Status oder die Sichtbarkeit von Ansichten in der Ansichtsstruktur " " ändert, sodass die Ansichten erneut geladen werden müssen, wodurch der onGlobalLayout-Wert zweimal aufgerufen wird. –