-
public final class AffordanceViewManager모든 광고뷰(배너, 네이티브, 전면 등) 위에 AffordanceView 를 오버레이로 붙였다 뗐다 할 수 있게 해주는 매니저.
host 와 anchor 를 분리한다.
- host — 배지를 실제로 담는 ViewGroup. getOverlay 에 추가되므로 host 의 자식이 아니며, host / 형제 뷰의 measure, layout 계산에 관여하지 않는다.
- anchor — 배지의 위치 기준이 되는 뷰. host 자신이거나 host 의 자손이면 된다. 배너 컨테이너가 MATCH_PARENT 이고 광고 콘텐츠만 가운데 320dp 로 놓이는 경우, anchor 를 광고 콘텐츠 뷰로 주면 배지가 화면 끝이 아니라 광고 모서리에 붙는다.
anchor 의 위치는 getMatrix 를 타고 올라가며 host 의 로컬 좌표계로 변환하므로, ScriptAdapter 처럼
{@code setScaleX/Y}로 축소된 광고뷰에도 시각적 경계에 정확히 맞는다. 배지 자체는 host 오버레이에 있으므로 광고뷰의 scale 에 함께 축소되지 않는다.마진은 정렬된 변 기준으로 상하좌우 동일하게 적용된다. 가운데 정렬 축에는 적용하지 않는다.
사용 예:// 광고 콘텐츠(adView) 기준 우측 하단, 6dp 마진 AffordanceViewManager.getInstance() .show(bannerContainer, adView, rewardModel, Gravity.BOTTOM | Gravity.END, 6); AffordanceViewManager.getInstance().setRewarded(bannerContainer, true); AffordanceViewManager.getInstance().detach(bannerContainer);
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description public interfaceAffordanceViewManager.OnAffordanceCheckedListener광고뷰 클릭으로 적립 체크가 일어났을 때 호출되는 콜백.
-
Method Summary
Modifier and Type Method Description static AffordanceViewManagergetInstance()AffordanceViewshow(ViewGroup adView, MWRewardBannerModel model)host 전체를 기준으로 기본 위치(우하단, 6dp)에 배지를 붙인다. AffordanceViewshow(ViewGroup adView, MWRewardBannerModel model, int gravity, int marginDp)host 전체를 기준으로 배지를 붙인다. AffordanceViewshow(ViewGroup host, View anchor, MWRewardBannerModel model, int gravity, int marginDp)host 오버레이에 배지를 붙이되, 위치는 anchor 의 경계를 기준으로 계산한다. voidupdateAnchor(View host, View anchor)광고 갱신 등으로 기준 뷰만 바뀐 경우 anchor 를 교체한다. voidupdatePosition(View host, int gravity, int marginDp)이미 붙어있는 배지의 위치/마진만 변경한다. voidsetRewarded(View host, boolean rewarded)이미 붙어있는 배지의 적립 상태만 갱신한다. voidsetText(View host, CharSequence text)이미 붙어있는 배지의 텍스트만 갱신한다. booleanisAttached(View host)AffordanceViewgetAffordanceView(View host)voidenableClickToCheck(View host, String rewardKey, Drawable checkedIcon, View.OnClickListener passthroughClickListener, AffordanceViewManager.OnAffordanceCheckedListener checkedListener)광고뷰 클릭 시 배지를 "체크 완료" 상태로 전환하고 그 시각을 SharedPreferences 에 저장한다. booleanhasChecked(Context context, String rewardKey)longgetCheckedTime(Context context, String rewardKey)voidclearChecked(Context context, String rewardKey)voidhide(View host)배지를 숨긴다 (오버레이에서 제거하지 않고 GONE 처리). voiddetach(View host)배지를 완전히 제거한다. voiddetachAll()-
-
Method Detail
-
getInstance
static AffordanceViewManager getInstance()
-
show
AffordanceView show(ViewGroup adView, MWRewardBannerModel model)
host 전체를 기준으로 기본 위치(우하단, 6dp)에 배지를 붙인다.
-
show
AffordanceView show(ViewGroup adView, MWRewardBannerModel model, int gravity, int marginDp)
host 전체를 기준으로 배지를 붙인다. (기존 시그니처 호환)
-
show
AffordanceView show(ViewGroup host, View anchor, MWRewardBannerModel model, int gravity, int marginDp)
host 오버레이에 배지를 붙이되, 위치는 anchor 의 경계를 기준으로 계산한다.
- Parameters:
host- 배지를 담을 ViewGroup (보통 배너 컨테이너)anchor- 위치 기준 뷰.model- 리워드 배너 데이터gravity- anchor 기준 배지 위치 (예:{@code Gravity.BOTTOM | Gravity.END})marginDp- anchor 테두리와의 여백(dp).
-
updateAnchor
void updateAnchor(View host, View anchor)
광고 갱신 등으로 기준 뷰만 바뀐 경우 anchor 를 교체한다.
-
updatePosition
void updatePosition(View host, int gravity, int marginDp)
이미 붙어있는 배지의 위치/마진만 변경한다.
-
setRewarded
void setRewarded(View host, boolean rewarded)
이미 붙어있는 배지의 적립 상태만 갱신한다.
-
setText
void setText(View host, CharSequence text)
이미 붙어있는 배지의 텍스트만 갱신한다.
-
isAttached
boolean isAttached(View host)
-
getAffordanceView
AffordanceView getAffordanceView(View host)
-
enableClickToCheck
void enableClickToCheck(View host, String rewardKey, Drawable checkedIcon, View.OnClickListener passthroughClickListener, AffordanceViewManager.OnAffordanceCheckedListener checkedListener)
광고뷰 클릭 시 배지를 "체크 완료" 상태로 전환하고 그 시각을 SharedPreferences 에 저장한다.
주의: 광고 콘텐츠가 WebView 이거나 자체적으로 터치를 소비하면 OnClickListener 가 호출되지않을 수 있다. 그럴 때는 미디에이션 onAdClicked 콜백에서 setRewarded 를직접 호출하는 편이 확실하다.
-
hasChecked
boolean hasChecked(Context context, String rewardKey)
-
getCheckedTime
long getCheckedTime(Context context, String rewardKey)
-
clearChecked
void clearChecked(Context context, String rewardKey)
-
detachAll
void detachAll()
-
-
-
-