forked from organicmaps/organicmaps
[android] Loading icon only after animation end.
Show icon only after bitmap is loaded.
This commit is contained in:
parent
09c3343d9c
commit
88fd8fd022
1 changed files with 40 additions and 8 deletions
|
@ -1,5 +1,6 @@
|
|||
package com.mapswithme.maps.widget.placepage;
|
||||
|
||||
import android.animation.Animator;
|
||||
import android.animation.ValueAnimator;
|
||||
import android.content.res.Resources;
|
||||
import android.support.annotation.NonNull;
|
||||
|
@ -83,7 +84,10 @@ final class BannerController implements View.OnClickListener
|
|||
if (!showBanner)
|
||||
return;
|
||||
|
||||
loadIcon(banner);
|
||||
if (TextUtils.isEmpty(mBanner.getIconUrl()))
|
||||
UiUtils.hide(mIcon);
|
||||
else
|
||||
loadIcon(banner);
|
||||
if (mTitle != null)
|
||||
{
|
||||
String title = mResources.getString(mResources.getIdentifier(banner.getTitle(), "string", mFrame.getContext().getPackageName()));
|
||||
|
@ -113,9 +117,15 @@ final class BannerController implements View.OnClickListener
|
|||
|
||||
mIsOpened = true;
|
||||
setFrameHeight(WRAP_CONTENT);
|
||||
setIconParams(mOpenIconSize, 0, mMarginBase);
|
||||
setIconParams(mOpenIconSize, 0, mMarginBase, new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
loadIcon(mBanner);
|
||||
}
|
||||
});
|
||||
UiUtils.show(mMessage, mAdMarker);
|
||||
loadIcon(mBanner);
|
||||
if (mTitle != null)
|
||||
mTitle.setMaxLines(2);
|
||||
mFrame.setOnClickListener(this);
|
||||
|
@ -128,9 +138,15 @@ final class BannerController implements View.OnClickListener
|
|||
|
||||
mIsOpened = false;
|
||||
setFrameHeight((int) mCloseFrameHeight);
|
||||
setIconParams(mCloseIconSize, mMarginBase, mMarginHalfPlus);
|
||||
setIconParams(mCloseIconSize, mMarginBase, mMarginHalfPlus, new Runnable()
|
||||
{
|
||||
@Override
|
||||
public void run()
|
||||
{
|
||||
loadIcon(mBanner);
|
||||
}
|
||||
});
|
||||
UiUtils.hide(mMessage, mAdMarker);
|
||||
loadIcon(mBanner);
|
||||
if (mTitle != null)
|
||||
mTitle.setMaxLines(1);
|
||||
mFrame.setOnClickListener(null);
|
||||
|
@ -143,10 +159,15 @@ final class BannerController implements View.OnClickListener
|
|||
mFrame.setLayoutParams(lp);
|
||||
}
|
||||
|
||||
private void setIconParams(final float size, final float marginRight, final float marginTop)
|
||||
private void setIconParams(final float size, final float marginRight, final float marginTop,
|
||||
final @Nullable Runnable listener)
|
||||
{
|
||||
if (mIcon == null || UiUtils.isHidden(mIcon))
|
||||
{
|
||||
if (listener != null)
|
||||
listener.run();
|
||||
return;
|
||||
}
|
||||
|
||||
if (mIconAnimator != null)
|
||||
mIconAnimator.cancel();
|
||||
|
@ -157,7 +178,11 @@ final class BannerController implements View.OnClickListener
|
|||
final float startTop = lp.topMargin;
|
||||
mIconAnimator = ValueAnimator.ofFloat(0.0f, 1.0f);
|
||||
if (mIconAnimator == null)
|
||||
{
|
||||
if (listener != null)
|
||||
listener.run();
|
||||
return;
|
||||
}
|
||||
|
||||
mIconAnimator.addUpdateListener(new ValueAnimator.AnimatorUpdateListener()
|
||||
{
|
||||
|
@ -173,6 +198,15 @@ final class BannerController implements View.OnClickListener
|
|||
mIcon.setLayoutParams(lp);
|
||||
}
|
||||
});
|
||||
mIconAnimator.addListener(new UiUtils.SimpleAnimatorListener()
|
||||
{
|
||||
@Override
|
||||
public void onAnimationEnd(Animator animation)
|
||||
{
|
||||
if (listener != null)
|
||||
listener.run();
|
||||
}
|
||||
});
|
||||
mIconAnimator.setDuration(DURATION_DEFAULT);
|
||||
mIconAnimator.start();
|
||||
}
|
||||
|
@ -188,8 +222,6 @@ final class BannerController implements View.OnClickListener
|
|||
return;
|
||||
}
|
||||
|
||||
UiUtils.show(mIcon);
|
||||
|
||||
Glide.with(mIcon.getContext())
|
||||
.load(banner.getIconUrl())
|
||||
.centerCrop()
|
||||
|
|
Loading…
Add table
Reference in a new issue