...
Code Block | ||
---|---|---|
| ||
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();
final MediaView mediaView = view.findViewById(R.id.mediaView);
final TextView titleTextView = view.findViewById(R.id.textTitle);
final ImageView iconView = view.findViewById(R.id.imageIcon);
final TextView descriptionTextView = view.findViewById(R.id.textDescription);
final CtaView ctaView = view.findViewById(R.id.ctaView);
final CtaPresenter ctaPresenter = new CtaPresenter(ctaView); // CtaView should not be null
ctaPresenter.bind(nativeAd);
// 1) Assign Ad Properties.
if (mediaView != null) {
mediaView.setCreative(ad.getCreative());
mediaView.setVideoEventListener(new VideoEventListener() {
// Override and implement methods
// 고급 설정 참조
});
}
if (titleTextView != null) {
titleTextView.setText(ad.getTitle());
}
if (iconView != null) {
ImageLoader.getInstance().displayImage(ad.getIconUrl(), iconView);
}
if (descriptionTextView != null) {
descriptionTextView.setText(ad.getDescription());
}
// 2) Create a list of clickable views.
final List<View> clickableViews = new ArrayList<>();
clickableViews.add(ctaView);
clickableViews.add(mediaView);
clickableViews.add(titleTextView);
clickableViews.add(descriptionTextView);
// 3) Register ClickableViews, MediaView and NativeAd to NativeAdView.
view.setClickableViews(clickableViews);
view.setMediaView(mediaView);
view.setNativeAd(nativeAd);
// Advanced : 광고 View를 Scale 해서 사용하는 경우에 한하여 적용
// view.setScaleValue(SCALE_X_VALUE, SCALE_Y_VALUE);
// 4) Add OnNativeAdEventListener to NativeAdView and implement participated UI.
view.addOnNativeAdEventListener(new NativeAdView.OnNativeAdEventListener() {
@Override
public void onImpressed(@NonNull NativeAdView view, @NonNull NativeAd nativeAd) {
}
@Override
public void onClicked(@NonNull NativeAdView view, @NonNull NativeAd nativeAd) {
ctaPresenter.bind(nativeAd);
// 기획에 따른 추가적인 UI 처리
}
@Override
public void onRewardRequested(@NonNull NativeAdView view, @NonNull NativeAd nativeAd) {
// 기획에 따라 리워드 로딩 이미지를 보여주는 등의 처리
}
@Override
public void onRewarded(@NonNull NativeAdView view, @NonNull NativeAd nativeAd, @Nullable RewardResult rewardResult) {
// 리워드 적립의 결과 (RewardResult) SUCCESS, ALREADY_PARTICIPATED, MISSING_REWARD 등에 따라서 적절한 유저 커뮤니케이션 처리
}
@Override
public void onParticipated(@NonNull NativeAdView view, @NonNull NativeAd nativeAd) {
ctaPresenter.bind(nativeAd);
// 기획에 따른 추가적인 UI 처리
}
});
} |
...