У меня есть вид логотипа, который является полноэкранным фрагментом, содержащим одиночный ImageView
.
Я должен выполнить некоторые операции после того, как изображение логотипа будет полностью видимым.
Следующий код используется для вызова специальной задачи
@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;
}
Моя конкретная проблема: onGlobalLayout
вызывается дважды для этой иерархии представлений.
Я знаю, что onGlobalLayout
вызывается в performTraversal
of View.java
, поэтому это ожидается.
В случае использования одного родительского элемента с одиночным дочерним представлением я хочу различать атрибуты вида, чтобы doSpecialLogic
вызывается один раз [onGlobalLayout
вызывается дважды], после того, как изображение логотипа полностью становится видимым.
Пожалуйста, предложите несколько идей.