Java 类com.google.android.gms.ads.formats.NativeContentAdView 实例源码

项目:admobadapter    文件:AdmobRecyclerAdapterWrapper.java   
@Override
public void onBindViewHolder(RecyclerView.ViewHolder viewHolder, int position) {
    if (viewHolder==null)
        return;
    int itemViewType = viewHolder.getItemViewType();
    if(itemViewType == getViewTypeAdInstall()) {
        NativeAppInstallAdView lvi1 = (NativeAppInstallAdView) viewHolder.itemView;
        NativeAppInstallAd ad1 = (NativeAppInstallAd) getItem(position);
        getInstallAdsLayoutContext().bind(lvi1, ad1);
    }
    else if(itemViewType == getViewTypeAdContent()) {
        NativeContentAdView lvi2 = (NativeContentAdView) viewHolder.itemView;
        NativeContentAd ad2 = (NativeContentAd) getItem(position);
        getContentAdsLayoutContext().bind(lvi2, ad2);
    }
    else{
        int origPos = AdapterCalculator.getOriginalContentPosition(position,
                adFetcher.getFetchedAdsCount(), mAdapter.getItemCount());
        mAdapter.onBindViewHolder(viewHolder, origPos);
    }
}
项目:android-ads    文件:MultiFormatAdPlacement.java   
public ContentAdViewHolder getContentAdViewHolder() {
    // There is no instance in which this will be called before getView(), so there is
    // no reason getTag() should ever return a null value.
    AdViewHolder holder = (AdViewHolder) mFrame.getTag();

    if (holder instanceof ContentAdViewHolder) {
        return (ContentAdViewHolder) holder;
    } else {
        mFrame.removeAllViews();

        LayoutInflater inflater = (LayoutInflater) mFrame.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        NativeContentAdView adView = (NativeContentAdView) inflater
                .inflate(R.layout.item_content_ad, mFrame, false);
        mFrame.addView(adView);

        ContentAdViewHolder contentAdViewHolder = new ContentAdViewHolder(adView);
        mFrame.setTag(contentAdViewHolder);

        return contentAdViewHolder;
    }
}
项目:admob-native-advanced-feed    文件:NativeContentAdViewHolder.java   
NativeContentAdViewHolder(View view) {
    super(view);
    NativeContentAdView adView = (NativeContentAdView) view;

    // Register the view used for each individual asset.
    adView.setHeadlineView(adView.findViewById(R.id.contentad_headline));
    adView.setImageView(adView.findViewById(R.id.contentad_image));
    adView.setBodyView(adView.findViewById(R.id.contentad_body));
    adView.setCallToActionView(adView.findViewById(R.id.contentad_call_to_action));
    adView.setLogoView(adView.findViewById(R.id.contentad_logo));
    adView.setAdvertiserView(adView.findViewById(R.id.contentad_advertiser));
}
项目:admob-native-advanced-feed    文件:RecyclerViewAdapter.java   
/**
 * Replaces the content in the views that make up the menu item view and the
 * Native Express ad view. This method is invoked by the layout manager.
 */
@Override
public void onBindViewHolder(RecyclerView.ViewHolder holder, int position) {
    int viewType = getItemViewType(position);
    switch (viewType) {
        case NATIVE_APP_INSTALL_AD_VIEW_TYPE:
            NativeAppInstallAd appInstallAd = (NativeAppInstallAd) mRecyclerViewItems.get(position);
            populateAppInstallAdView(appInstallAd, (NativeAppInstallAdView) holder.itemView);
            break;
        case NATIVE_CONTENT_AD_VIEW_TYPE:
            NativeContentAd contentAd = (NativeContentAd) mRecyclerViewItems.get(position);
            populateContentAdView(contentAd, (NativeContentAdView) holder.itemView);
            break;
        case MENU_ITEM_VIEW_TYPE:
            // fall through
        default:
            MenuItemViewHolder menuItemHolder = (MenuItemViewHolder) holder;
            MenuItem menuItem = (MenuItem) mRecyclerViewItems.get(position);

            // Get the menu item image resource ID.
            String imageName = menuItem.getImageName();
            int imageResID = mContext.getResources().getIdentifier(imageName, "drawable",
                    mContext.getPackageName());

            // Add the menu item details to the menu item view.
            menuItemHolder.menuItemImage.setImageResource(imageResID);
            menuItemHolder.menuItemName.setText(menuItem.getName());
            menuItemHolder.menuItemPrice.setText(menuItem.getPrice());
            menuItemHolder.menuItemCategory.setText(menuItem.getCategory());
            menuItemHolder.menuItemDescription.setText(menuItem.getDescription());
    }
}
项目:admob-native-advanced-feed    文件:RecyclerViewAdapter.java   
/**
 * Populates a {@link NativeContentAdView} object with data from a given
 * {@link NativeContentAd}.
 *
 * @param nativeContentAd the object containing the ad's assets
 * @param adView          the view to be populated
 */
private void populateContentAdView(NativeContentAd nativeContentAd,
                                   NativeContentAdView adView) {
    // Some assets are guaranteed to be in every NativeContentAd.
    ((TextView) adView.getHeadlineView()).setText(nativeContentAd.getHeadline());
    ((TextView) adView.getBodyView()).setText(nativeContentAd.getBody());
    ((TextView) adView.getCallToActionView()).setText(nativeContentAd.getCallToAction());
    ((TextView) adView.getAdvertiserView()).setText(nativeContentAd.getAdvertiser());

    List<NativeAd.Image> images = nativeContentAd.getImages();

    if (images.size() > 0) {
        ((ImageView) adView.getImageView()).setImageDrawable(images.get(0).getDrawable());
    }

    // Some aren't guaranteed, however, and should be checked.
    NativeAd.Image logoImage = nativeContentAd.getLogo();

    if (logoImage == null) {
        adView.getLogoView().setVisibility(View.INVISIBLE);
    } else {
        ((ImageView) adView.getLogoView()).setImageDrawable(logoImage.getDrawable());
        adView.getLogoView().setVisibility(View.VISIBLE);
    }

    // Assign native ad object to the native view.
    adView.setNativeAd(nativeContentAd);
}
项目:mopub-nativead-adapters    文件:SampleAdMobNativeAd.java   
@Override
protected void prepare(@NonNull final NativeContentAdView adView, @NonNull final NativeContentAd nativeAd) {
    final TextView  adTitle        = (TextView)adView.findViewById(R.id.ad_title);
    final TextView  adBody         = (TextView)adView.findViewById(R.id.ad_body);
    final ImageView adImage        = (ImageView)adView.findViewById(R.id.ad_image);
    final TextView  adCallToAction = (TextView)adView.findViewById(R.id.ad_call_to_action);

    adView.setHeadlineView(adTitle);
    adView.setBodyView(adBody);
    adView.setImageView(adImage);
    adView.setCallToActionView(adCallToAction);
}
项目:android-ads    文件:MainActivity.java   
/**
 * Populates a {@link NativeContentAdView} object with data from a given
 * {@link NativeContentAd}.
 *
 * @param nativeContentAd the object containing the ad's assets
 * @param adView          the view to be populated
 */
private void populateContentAdView(NativeContentAd nativeContentAd,
                                   NativeContentAdView adView) {
    mVideoStatus.setText("Video status: Ad does not contain a video asset.");
    mRefresh.setEnabled(true);

    adView.setHeadlineView(adView.findViewById(R.id.contentad_headline));
    adView.setImageView(adView.findViewById(R.id.contentad_image));
    adView.setBodyView(adView.findViewById(R.id.contentad_body));
    adView.setCallToActionView(adView.findViewById(R.id.contentad_call_to_action));
    adView.setLogoView(adView.findViewById(R.id.contentad_logo));
    adView.setAdvertiserView(adView.findViewById(R.id.contentad_advertiser));

    // Some assets are guaranteed to be in every NativeContentAd.
    ((TextView) adView.getHeadlineView()).setText(nativeContentAd.getHeadline());
    ((TextView) adView.getBodyView()).setText(nativeContentAd.getBody());
    ((TextView) adView.getCallToActionView()).setText(nativeContentAd.getCallToAction());
    ((TextView) adView.getAdvertiserView()).setText(nativeContentAd.getAdvertiser());

    List<NativeAd.Image> images = nativeContentAd.getImages();

    if (images.size() > 0) {
        ((ImageView) adView.getImageView()).setImageDrawable(images.get(0).getDrawable());
    }

    // Some aren't guaranteed, however, and should be checked.
    NativeAd.Image logoImage = nativeContentAd.getLogo();

    if (logoImage == null) {
        adView.getLogoView().setVisibility(View.INVISIBLE);
    } else {
        ((ImageView) adView.getLogoView()).setImageDrawable(logoImage.getDrawable());
        adView.getLogoView().setVisibility(View.VISIBLE);
    }

    // Assign native ad object to the native view.
    adView.setNativeAd(nativeContentAd);
}
项目:android-ads    文件:ContentAdViewHolder.java   
/**
 * Stores the View for a {@link NativeContentAd} and locates specific {@link View}s used
 * to display its assets.
 *
 * @param adView the {@link View} used to display assets for a native content ad.
 */
public ContentAdViewHolder(NativeContentAdView adView) {
    mAdView = adView;

    mAdView.setHeadlineView(mAdView.findViewById(R.id.contentad_headline));
    mAdView.setImageView(mAdView.findViewById(R.id.contentad_image));
    mAdView.setBodyView(mAdView.findViewById(R.id.contentad_body));
    mAdView.setCallToActionView(mAdView.findViewById(R.id.contentad_call_to_action));
    mAdView.setLogoView(mAdView.findViewById(R.id.contentad_logo));
    mAdView.setAdvertiserView(mAdView.findViewById(R.id.contentad_advertiser));
}
项目:android-ads    文件:ContentAdPlacement.java   
/**
 * Creates or reuses a {@link FrameLayout} for this ad placement, filling it asynchronously
 * with the assets for its {@link com.google.android.gms.ads.formats.NativeContentAd}.
 *
 * @param convertView a {@link View} to reuse if possible
 * @param parent      The {@link ViewGroup} into which the {@link View} will be placed
 * @return a {@link FrameLayout} that contains or will contain the ad assets for this placement
 */
@Override
public View getView(View convertView, ViewGroup parent) {
    // For each native ad, a FrameLayout is created and returned to the ListView as
    // the item's root view. This allows the fetcher to asynchronously request an ad, which
    // will be converted into a set of Views and placed into the FrameLayout by the
    // ViewHolder object.
    FrameLayout frameLayout = (FrameLayout) convertView;

    ContentAdViewHolder holder
            = (frameLayout == null) ? null : (ContentAdViewHolder) frameLayout.getTag();

    // If the holder is null, either this is the first time the item has been displayed, or
    // convertView held a different type of item before. In either case, a new FrameLayout
    // and ViewHolder should be created and used.
    if (holder == null) {
        frameLayout = new FrameLayout(parent.getContext());

        LayoutInflater inflater = (LayoutInflater) parent.getContext()
                .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        NativeContentAdView adView = (NativeContentAdView) inflater
                .inflate(R.layout.item_content_ad, frameLayout, false);
        frameLayout.addView(adView);

        holder = new ContentAdViewHolder(adView);
        frameLayout.setTag(holder);
    }

    // This statement kicks off the ad loading process.  The ViewHolder has some interface
    // methods that will be invoked when the ad is ready to be displayed or fails to load.
    mFetcher.loadAd(frameLayout.getContext(), holder);

    // The FrameLayout is returned to the ListView so it will have something to show for the
    // item right now. The FrameLayout will be filled with native ad assets later, once the
    // ad has finished loading.
    return frameLayout;
}
项目:googleads-mobile-android-examples    文件:MainActivity.java   
/**
 * Populates a {@link NativeContentAdView} object with data from a given
 * {@link NativeContentAd}.
 *
 * @param nativeContentAd the object containing the ad's assets
 * @param adView          the view to be populated
 */
private void populateContentAdView(NativeContentAd nativeContentAd,
                                   NativeContentAdView adView) {
    mVideoStatus.setText("Video status: Ad does not contain a video asset.");
    mRefresh.setEnabled(true);

    adView.setHeadlineView(adView.findViewById(R.id.contentad_headline));
    adView.setImageView(adView.findViewById(R.id.contentad_image));
    adView.setBodyView(adView.findViewById(R.id.contentad_body));
    adView.setCallToActionView(adView.findViewById(R.id.contentad_call_to_action));
    adView.setLogoView(adView.findViewById(R.id.contentad_logo));
    adView.setAdvertiserView(adView.findViewById(R.id.contentad_advertiser));

    // Some assets are guaranteed to be in every NativeContentAd.
    ((TextView) adView.getHeadlineView()).setText(nativeContentAd.getHeadline());
    ((TextView) adView.getBodyView()).setText(nativeContentAd.getBody());
    ((TextView) adView.getCallToActionView()).setText(nativeContentAd.getCallToAction());
    ((TextView) adView.getAdvertiserView()).setText(nativeContentAd.getAdvertiser());

    List<NativeAd.Image> images = nativeContentAd.getImages();

    if (images.size() > 0) {
        ((ImageView) adView.getImageView()).setImageDrawable(images.get(0).getDrawable());
    }

    // Some aren't guaranteed, however, and should be checked.
    NativeAd.Image logoImage = nativeContentAd.getLogo();

    if (logoImage == null) {
        adView.getLogoView().setVisibility(View.INVISIBLE);
    } else {
        ((ImageView) adView.getLogoView()).setImageDrawable(logoImage.getDrawable());
        adView.getLogoView().setVisibility(View.VISIBLE);
    }

    // Assign native ad object to the native view.
    adView.setNativeAd(nativeContentAd);
}
项目:googleads-mobile-android-mediation    文件:MainActivity.java   
/**
 * Populates a {@link NativeContentAdView} object with data from a given
 * {@link NativeContentAd}.
 *
 * @param nativeContentAd the object containing the ad's assets
 * @param adView          the view to be populated
 */
private void populateContentAdView(NativeContentAd nativeContentAd,
                                   NativeContentAdView adView) {
    // Assign native ad object to the native view.
    adView.setNativeAd(nativeContentAd);

    adView.setHeadlineView(adView.findViewById(R.id.contentad_headline));
    adView.setImageView(adView.findViewById(R.id.contentad_image));
    adView.setBodyView(adView.findViewById(R.id.contentad_body));
    adView.setCallToActionView(adView.findViewById(R.id.contentad_call_to_action));
    adView.setLogoView(adView.findViewById(R.id.contentad_logo));
    adView.setAdvertiserView(adView.findViewById(R.id.contentad_advertiser));

    // Some assets are guaranteed to be in every NativeContentAd.
    ((TextView) adView.getHeadlineView()).setText(nativeContentAd.getHeadline());
    ((TextView) adView.getBodyView()).setText(nativeContentAd.getBody());
    ((TextView) adView.getCallToActionView()).setText(nativeContentAd.getCallToAction());
    ((TextView) adView.getAdvertiserView()).setText(nativeContentAd.getAdvertiser());

    List<NativeAd.Image> images = nativeContentAd.getImages();

    if (images.size() > 0) {
        ((ImageView) adView.getImageView()).setImageDrawable(images.get(0).getDrawable());
    }

    // Some aren't guaranteed, however, and should be checked.
    NativeAd.Image logoImage = nativeContentAd.getLogo();

    if (logoImage == null) {
        adView.getLogoView().setVisibility(View.INVISIBLE);
    } else {
        ((ImageView) adView.getLogoView())
                .setImageDrawable(logoImage.getDrawable());
        adView.getLogoView().setVisibility(View.VISIBLE);
    }

    // Handle the fact that this could be a Sample SDK native ad, which includes a
    // "degree of awesomeness" field.

    Bundle extras = nativeContentAd.getExtras();
    if (extras.containsKey(SampleCustomEvent.DEGREE_OF_AWESOMENESS)) {
        TextView degree = (TextView) adView.findViewById(R.id.appinstall_degreeofawesomeness);
        degree.setVisibility(View.VISIBLE);
        degree.setText(extras.getString(SampleCustomEvent.DEGREE_OF_AWESOMENESS));
    }
}
项目:googleads-mobile-android-mediation    文件:MyTargetNativeAdapter.java   
@Override
public void trackView(final View view) {

    view.post(new Runnable() {
        @Override
        public void run() {
            if (view instanceof NativeContentAdView) {
                NativeContentAdView nativeContentAdView = (NativeContentAdView) view;
                final ArrayList<View> assetViews = new ArrayList<>();

                if (nativeContentAdView.getHeadlineView() != null) {
                    assetViews.add(nativeContentAdView.getHeadlineView());
                }

                if (nativeContentAdView.getBodyView() != null) {
                    assetViews.add(nativeContentAdView.getBodyView());
                }

                if (nativeContentAdView.getCallToActionView() != null) {
                    assetViews.add(nativeContentAdView.getCallToActionView());
                }

                if (nativeContentAdView.getAdvertiserView() != null) {
                    assetViews.add(nativeContentAdView.getAdvertiserView());
                }

                if (nativeContentAdView.getImageView() != null) {
                    assetViews.add(nativeContentAdView.getImageView());
                }

                if (nativeContentAdView.getLogoView() != null) {
                    assetViews.add(nativeContentAdView.getLogoView());
                }

                if (nativeContentAdView.getMediaView() != null) {
                    assetViews.add(mediaAdView);
                }

                nativeAd.registerView(view, assetViews);
            } else {
                Log.w(TAG, "Failed to register view for interaction.");
            }
        }
    });
}
项目:admobadapter    文件:ContentAdLayoutContext.java   
@Override
public void bind(NativeAdView nativeAdView, NativeAd nativeAd) throws ClassCastException{
    if (nativeAdView == null || nativeAd == null) return;
    if(!(nativeAd instanceof NativeContentAd) || !(nativeAdView instanceof NativeContentAdView))
        throw new ClassCastException();

    NativeContentAd ad = (NativeContentAd) nativeAd;
    NativeContentAdView adView = (NativeContentAdView) nativeAdView;

    // Locate the view that will hold the headline, set its text, and call the
    // NativeContentAdView's setHeadlineView method to register it.
    TextView tvHeader = (TextView) nativeAdView.findViewById(R.id.tvHeader);
    tvHeader.setText(ad.getHeadline());
    adView.setHeadlineView(tvHeader);

    TextView tvDescription = (TextView) nativeAdView.findViewById(R.id.tvDescription);
    tvDescription.setText(ad.getBody());
    adView.setBodyView(tvDescription);

    ImageView ivLogo = (ImageView) nativeAdView.findViewById(R.id.ivLogo);
    if(ad.getLogo()!=null)
        ivLogo.setImageDrawable(ad.getLogo().getDrawable());
    adView.setLogoView(ivLogo);

    Button btnAction = (Button) nativeAdView.findViewById(R.id.btnAction);
    btnAction.setText(ad.getCallToAction());
    adView.setCallToActionView(btnAction);

    TextView tvAdvertiser = (TextView) nativeAdView.findViewById(R.id.tvAdvertiser);
    tvAdvertiser.setText(ad.getAdvertiser());
    adView.setAdvertiserView(tvAdvertiser);

    ImageView ivImage = (ImageView) nativeAdView.findViewById(R.id.ivImage);
    if (ad.getImages() != null && ad.getImages().size() > 0) {
        ivImage.setImageDrawable(ad.getImages().get(0).getDrawable());
        ivImage.setVisibility(View.VISIBLE);
    } else ivImage.setVisibility(View.GONE);
    adView.setImageView(ivImage);

    // Call the NativeContentAdView's setNativeAd method to register the
    // NativeAdObject.
    nativeAdView.setNativeAd(nativeAd);
}
项目:android-ads    文件:MainActivity.java   
/**
 * Populates a {@link NativeContentAdView} object with data from a given
 * {@link NativeContentAd}.
 *
 * @param nativeContentAd the object containing the ad's assets
 * @param adView          the view to be populated
 */
private void populateContentAdView(NativeContentAd nativeContentAd,
                                   NativeContentAdView adView) {
    adView.setHeadlineView(adView.findViewById(R.id.contentad_headline));
    adView.setBodyView(adView.findViewById(R.id.contentad_body));
    adView.setCallToActionView(adView.findViewById(R.id.contentad_call_to_action));
    adView.setLogoView(adView.findViewById(R.id.contentad_logo));
    adView.setAdvertiserView(adView.findViewById(R.id.contentad_advertiser));

    // Some assets are guaranteed to be in every NativeContentAd.
    ((TextView) adView.getHeadlineView()).setText(nativeContentAd.getHeadline());
    ((TextView) adView.getBodyView()).setText(nativeContentAd.getBody());
    ((TextView) adView.getCallToActionView()).setText(nativeContentAd.getCallToAction());
    ((TextView) adView.getAdvertiserView()).setText(nativeContentAd.getAdvertiser());

    // Get the video controller for the ad. One will always be provided, even if the ad doesn't
    // have a video asset.
    VideoController vc = nativeContentAd.getVideoController();

    MediaView mediaView = adView.findViewById(R.id.contentad_media);
    ImageView mainImageView = adView.findViewById(R.id.contentad_image);

    // Apps can check the VideoController's hasVideoContent property to determine if the
    // NativeContentAd has a video asset.
    if (vc.hasVideoContent()) {
        mainImageView.setVisibility(View.GONE);
        adView.setMediaView(mediaView);

        mVideoStatus.setText(String.format(Locale.getDefault(),
                "Video status: Ad contains a %.2f:1 video asset.",
                vc.getAspectRatio()));

        // Create a new VideoLifecycleCallbacks object and pass it to the VideoController. The
        // VideoController will call methods on this object when events occur in the video
        // lifecycle.
        vc.setVideoLifecycleCallbacks(new VideoController.VideoLifecycleCallbacks() {
            public void onVideoEnd() {
                // Publishers should allow native ads to complete video playback before
                // refreshing or replacing them with another ad in the same UI location.
                mRefresh.setEnabled(true);
                mVideoStatus.setText("Video status: Video playback has ended.");
                super.onVideoEnd();
            }
        });
    } else {
        mediaView.setVisibility(View.GONE);
        adView.setImageView(mainImageView);

        // At least one image is guaranteed.
        List<NativeAd.Image> images = nativeContentAd.getImages();
        mainImageView.setImageDrawable(images.get(0).getDrawable());

        mRefresh.setEnabled(true);
        mVideoStatus.setText("Video status: Ad does not contain a video asset.");
    }

    // These assets aren't guaranteed to be in every NativeContentAd, so it's important to
    // check before trying to display them.
    NativeAd.Image logoImage = nativeContentAd.getLogo();

    if (logoImage == null) {
        adView.getLogoView().setVisibility(View.INVISIBLE);
    } else {
        ((ImageView) adView.getLogoView()).setImageDrawable(logoImage.getDrawable());
        adView.getLogoView().setVisibility(View.VISIBLE);
    }

    // Assign native ad object to the native view.
    adView.setNativeAd(nativeContentAd);
}
项目:googleads-mobile-android-examples    文件:MainActivity.java   
/**
 * Populates a {@link NativeContentAdView} object with data from a given
 * {@link NativeContentAd}.
 *
 * @param nativeContentAd the object containing the ad's assets
 * @param adView          the view to be populated
 */
private void populateContentAdView(NativeContentAd nativeContentAd,
                                   NativeContentAdView adView) {
    adView.setHeadlineView(adView.findViewById(R.id.contentad_headline));
    adView.setBodyView(adView.findViewById(R.id.contentad_body));
    adView.setCallToActionView(adView.findViewById(R.id.contentad_call_to_action));
    adView.setLogoView(adView.findViewById(R.id.contentad_logo));
    adView.setAdvertiserView(adView.findViewById(R.id.contentad_advertiser));

    // Some assets are guaranteed to be in every NativeContentAd.
    ((TextView) adView.getHeadlineView()).setText(nativeContentAd.getHeadline());
    ((TextView) adView.getBodyView()).setText(nativeContentAd.getBody());
    ((TextView) adView.getCallToActionView()).setText(nativeContentAd.getCallToAction());
    ((TextView) adView.getAdvertiserView()).setText(nativeContentAd.getAdvertiser());

    // Get the video controller for the ad. One will always be provided, even if the ad doesn't
    // have a video asset.
    VideoController vc = nativeContentAd.getVideoController();

    MediaView mediaView = adView.findViewById(R.id.contentad_media);
    ImageView mainImageView = adView.findViewById(R.id.contentad_image);

    // Apps can check the VideoController's hasVideoContent property to determine if the
    // NativeContentAd has a video asset.
    if (vc.hasVideoContent()) {
        mainImageView.setVisibility(View.GONE);
        adView.setMediaView(mediaView);

        mVideoStatus.setText(String.format(Locale.getDefault(),
                "Video status: Ad contains a %.2f:1 video asset.",
                vc.getAspectRatio()));

        // Create a new VideoLifecycleCallbacks object and pass it to the VideoController. The
        // VideoController will call methods on this object when events occur in the video
        // lifecycle.
        vc.setVideoLifecycleCallbacks(new VideoController.VideoLifecycleCallbacks() {
            public void onVideoEnd() {
                // Publishers should allow native ads to complete video playback before
                // refreshing or replacing them with another ad in the same UI location.
                mRefresh.setEnabled(true);
                mVideoStatus.setText("Video status: Video playback has ended.");
                super.onVideoEnd();
            }
        });
    } else {
        mediaView.setVisibility(View.GONE);
        adView.setImageView(mainImageView);

        // At least one image is guaranteed.
        List<NativeAd.Image> images = nativeContentAd.getImages();
        mainImageView.setImageDrawable(images.get(0).getDrawable());

        mRefresh.setEnabled(true);
        mVideoStatus.setText("Video status: Ad does not contain a video asset.");
    }

    // These assets aren't guaranteed to be in every NativeContentAd, so it's important to
    // check before trying to display them.
    NativeAd.Image logoImage = nativeContentAd.getLogo();

    if (logoImage == null) {
        adView.getLogoView().setVisibility(View.INVISIBLE);
    } else {
        ((ImageView) adView.getLogoView()).setImageDrawable(logoImage.getDrawable());
        adView.getLogoView().setVisibility(View.VISIBLE);
    }

    // Assign native ad object to the native view.
    adView.setNativeAd(nativeContentAd);
}
项目:mopub-nativead-adapters    文件:AdMobNativeAd.java   
/**
 * To render ad view properly, implementation is expected to call {@link NativeContentAdView#setHeadlineView(View)}, {@link NativeContentAdView#setBodyView(View)}, {@link NativeContentAdView#setCallToActionView(View)}, and/or {@link NativeContentAdView#setImageView(View)} methods,
 * and render the ad view text/images using {@link NativeContentAd#getHeadline()}, {@link NativeContentAd#getBody()}, {@link NativeContentAd#getCallToAction()}, and/or {@link NativeContentAd#getImages()} methods.
 * @param adView The native ad view to render the ad.
 * @param nativeAd The native ad instance used to render the ad view.
 */
protected abstract void prepare(@NonNull NativeContentAdView adView, @NonNull NativeContentAd nativeAd);