-
public final class AffordanceViewManager모든 광고뷰(배너, 네이티브, 전면 등) 위에 AffordanceView 를 오버레이로 붙였다 뗐다 할 수 있게 해주는 매니저.
대상 광고뷰의 부모가 FrameLayout 이 아니어도 동작한다 — 그 경우 내부적으로 광고뷰를 FrameLayout 래퍼로 감싸서 원래 위치/속성을 유지한 채 그 위에 뱃지를 겹쳐 그린다.
사용 예:// 1) 배지 부착 (아직 미적립 상태, "1P" 텍스트) AffordanceViewManager.getInstance().show(adView, false, "1P", Gravity.TOP | Gravity.END, 6); // 2) adView 클릭 시 체크 아이콘으로 전환 + 체크 시각 SharedPreferences 저장 AffordanceViewManager.getInstance().enableClickToCheck(adView, adUnitId, checkDrawable, originalAdClickListener, (v, key, time) -> { // 서버에 포인트 적립 요청 등 후속 처리 }); ... AffordanceViewManager.getInstance().hide(adView);
-
-
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, int gravity, int marginDp)adView 위에 어포던스 배지를 붙인다. voidsetRewarded(View adView, boolean rewarded)이미 붙어있는 배지의 적립 상태만 갱신한다. voidenableClickToCheck(View adView, String rewardKey, Drawable checkedIcon, View.OnClickListener passthroughClickListener, AffordanceViewManager.OnAffordanceCheckedListener checkedListener)adView(광고 뷰) 클릭 시 배지를 자동으로 "체크 완료" 상태로 전환하고,그 시각을 SharedPreferences 에 저장하도록 설정한다. booleanhasChecked(Context context, String rewardKey)rewardKey 로 저장된 체크 시각이 있는지 여부. longgetCheckedTime(Context context, String rewardKey)rewardKey 로 저장된 체크 시각(currentTimeMillis). voidclearChecked(Context context, String rewardKey)rewardKey 의 체크 기록을 초기화한다 (ex. voidhide(View adView)배지를 숨긴다 (뷰 트리에서는 제거하지 않고 GONE 처리). voiddetach(View adView)배지를 완전히 제거하고, 래핑했던 경우 원래 뷰 계층을 복원한다. voiddetachAll()-
-
Method Detail
-
getInstance
static AffordanceViewManager getInstance()
-
show
AffordanceView show(ViewGroup adView, MWRewardBannerModel model, int gravity, int marginDp)
adView 위에 어포던스 배지를 붙인다. 이미 붙어 있으면 상태만 갱신한다.
- Parameters:
adView- 배지를 올릴 대상 광고뷰model- 리워드 배너 데이터gravity- adView 기준 배지 위치 (예: Gravity.TOP or Gravity.marginDp- 배지와 adView 테두리 사이 여백(dp), 상하좌우 동일 적용
-
setRewarded
void setRewarded(View adView, boolean rewarded)
이미 붙어있는 배지의 적립 상태만 갱신한다. (붙어있지 않으면 아무 동작 없음)
-
enableClickToCheck
void enableClickToCheck(View adView, String rewardKey, Drawable checkedIcon, View.OnClickListener passthroughClickListener, AffordanceViewManager.OnAffordanceCheckedListener checkedListener)
adView(광고 뷰) 클릭 시 배지를 자동으로 "체크 완료" 상태로 전환하고,그 시각을 SharedPreferences 에 저장하도록 설정한다. show 로 배지를먼저 붙인 뒤에 호출해야 한다.
주의: 이 메서드는 adView 에 setOnClickListener 를 새로 등록한다.광고 SDK가 adView 에 이미 자체 클릭 리스너를 걸어둔 경우 그 리스너를
{@code passthroughClickListener}로 넘기면, 매니저가 그 리스너를 먼저 호출한 뒤체크 로직을 이어서 수행하므로 기존 클릭 동작이 유지된다.- Parameters:
adView- 클릭을 감지할 광고뷰 (show() 에 넘겼던 것과 동일해야 함)rewardKey- SharedPreferences 저장 키로 쓸 고유 식별자 (ex.checkedIcon- 체크(적립 완료) 상태에서 보여줄 아이콘 — null 이면 기존 아이콘 유지passthroughClickListener- adView 가 원래 갖고 있던 클릭 동작 (없으면 null)checkedListener- 체크가 실제로 발생했을 때 알려줄 콜백 (없으면 null)
-
hasChecked
boolean hasChecked(Context context, String rewardKey)
rewardKey 로 저장된 체크 시각이 있는지 여부.
-
getCheckedTime
long getCheckedTime(Context context, String rewardKey)
rewardKey 로 저장된 체크 시각(currentTimeMillis). 저장된 값이 없으면 0.
-
clearChecked
void clearChecked(Context context, String rewardKey)
rewardKey 의 체크 기록을 초기화한다 (ex. 일일 리셋 정책에서 사용).
-
detachAll
void detachAll()
-
-
-
-