CtaView (버튼) 커스터마이징
CtaView를 Default로 제공되는 View가 아닌, 다른 모양의 View로 만들고 싶으신 경우 다음과 같이 설정을 진행하면 됩니다.
4.1. 기본 설정 | Step3 에서 안내한 populateAd 에서, CtaView 부분을 아래와 같이 수정합니다.
public void populateAd(final NativeAd nativeAd) { final NativeAdView view = findViewById(R.id.native_ad_view); final Ad ad = nativeAd.getAd(); final Creative.Type creativeType = ad.getCreative() == null ? null : ad.getCreative().getType(); ...(생략)... // View를 상속받는 CustomCtaView class를 생성하여 원하는 모양의 CtaView를 사용 할 수 있습니다. final CustomCtaView customizedCtaView = view.findViewById(R.id.customCtaView); // 아래 정보를 이용하여 cta view를 업데이트 final String callToAction = nativeAd.getAd().getCallToAction(); final int reward = nativeAd.getAd().getReward(); // 주의사항 참조 final boolean participated = nativeAd.isParticipated(); updateCtaStatus(customizedCtaView, nativeAd); ...(생략)... final List<View> clickableViews = new ArrayList<>(); clickableViews.add(customizedCtaView); ...(생략)... nativeAdView.addOnNativeAdEventListener(new NativeAdView.OnNativeAdEventListener() { ...(생략)... @Override public void onParticipated(@NonNull NativeAdView view, @NonNull NativeAd nativeAd) { updateCtaStatus(customizedCtaView, nativeAd); } }); } // 기획에 따라 수정될 수 있는 예시 코드입니다. void updateCtaStatus(CustomCtaView ctaView, NativeAd nativeAd) { final String callToAction = nativeAd.getAd().getCallToAction(); final int reward = nativeAd.getAvailableReward(); final int totalReward = nativeAd.getAd().getReward(); final boolean participated = nativeAd.isParticipated(); final boolean isClicked = nativeAd.isClicked(); final boolean isActionType = nativeAd.getAd().isActionType(); if (isClicked && isActionType && !participated) { ctaView.setCtaText("참여 확인 중"); ctaView.setRewardIcon(null); ctaView.setRewardText(null); } else { if (totalReward > 0 && participated) { ctaView.setRewardIcon(R.drawable.your_reward_received_icon); ctaView.setRewardText(null); ctaView.setCtaText("참여 완료"); } else if (reward > 0) { ctaView.showRewardImage(R.drawable.your_reward_icon); ctaView.setRewardText(String.format(Locale.US, "+%,d", reward)); ctaView.setCtaText(callToAction); } else { ctaView.showRewardImage(null); ctaView.setRewardText(null); ctaView.setCtaText(callToAction); } } }