Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/115.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
通过libGDX/RoboVM在iOS中控制AdMob横幅的定位_Ios_Eclipse_Libgdx_Admob_Robovm - Fatal编程技术网

通过libGDX/RoboVM在iOS中控制AdMob横幅的定位

通过libGDX/RoboVM在iOS中控制AdMob横幅的定位,ios,eclipse,libgdx,admob,robovm,Ios,Eclipse,Libgdx,Admob,Robovm,我创建了我的libGDX iOS项目,我试图将AdMob广告放在屏幕的底部中央,但不知道如何实现这一点。我正在通过RoboVM使用绑定,不知道任何RoboVM方法来控制我的广告。我是从RoboVM复制的教程。有人有任何提示或教程可以帮助我完成这项工作吗?现在的广告在我看来,整个横幅广告的1/4缺失,更多的是朝向屏幕右侧。下面是我的代码: public class IOSLauncher extends IOSApplication.Delegate implements IActivityReq

我创建了我的libGDX iOS项目,我试图将AdMob广告放在屏幕的底部中央,但不知道如何实现这一点。我正在通过RoboVM使用绑定,不知道任何RoboVM方法来控制我的广告。我是从RoboVM复制的教程。有人有任何提示或教程可以帮助我完成这项工作吗?现在的广告在我看来,整个横幅广告的1/4缺失,更多的是朝向屏幕右侧。下面是我的代码:

public class IOSLauncher extends IOSApplication.Delegate implements IActivityRequestHandler{
private static final Logger log = new Logger(IOSLauncher.class.getName(), Application.LOG_DEBUG);
private static final boolean USE_TEST_DEVICES = true;
private GADBannerView adview;
private boolean adsInitialized = false;
private IOSApplication iosApplication;

@Override
protected IOSApplication createApplication() {
    IOSApplicationConfiguration config = new IOSApplicationConfiguration();
    config.orientationLandscape = true;
    config.orientationPortrait = false;

    iosApplication = new IOSApplication(new TestProject(this), config);
    return iosApplication;
}

public static void main(String[] argv) {
    NSAutoreleasePool pool = new NSAutoreleasePool();
    UIApplication.main(argv, null, IOSLauncher.class);
    pool.close();
}

@Override
public void hide() {
    initializeAds();

    final CGSize screenSize = UIScreen.getMainScreen().getBounds().size();
    double screenWidth = screenSize.width();

    final CGSize adSize = adview.getBounds().size();
    double adWidth = adSize.width();
    double adHeight = adSize.height();

    log.debug(String.format("Hidding ad. size[%s, %s]", adWidth, adHeight));

    float bannerWidth = (float) screenWidth;
    float bannerHeight = (float) (bannerWidth / adWidth * adHeight);

    adview.setFrame(new CGRect(0, -bannerHeight, bannerWidth, bannerHeight));
}

@Override
public void show() {
    initializeAds();

    final CGSize screenSize = UIScreen.getMainScreen().getBounds().size();
    double screenWidth = screenSize.width();

    final CGSize adSize = adview.getBounds().size();
    double adWidth = adSize.width();
    double adHeight = adSize.height();

    log.debug(String.format("Showing ad. size[%s, %s]", adWidth, adHeight));

    float bannerWidth = (float) screenWidth;
    float bannerHeight = (float) (bannerWidth / adWidth * adHeight);

    adview.setFrame(new CGRect((screenWidth / 2) - adWidth / 2, 0, bannerWidth, bannerHeight));
}

public void initializeAds() {
    if (!adsInitialized) {
        log.debug("Initalizing ads...");

        adsInitialized = true;

        adview = new GADBannerView(GADAdSize.banner());
        adview.setAdUnitID(Constants.AdUnitID); //put your secret key here
        adview.setRootViewController(iosApplication.getUIViewController());


        iosApplication.getUIViewController().getView().addSubview(adview);

        final GADRequest request = GADRequest.create();

        adview.setDelegate(new GADBannerViewDelegateAdapter() {
            @Override
            public void didReceiveAd(GADBannerView view) {
                super.didReceiveAd(view);
                log.debug("didReceiveAd");
            }

            @Override
            public void didFailToReceiveAd(GADBannerView view,
                    GADRequestError error) {
                super.didFailToReceiveAd(view, error);
                log.debug("didFailToReceiveAd:" + error);
            }
        });

        adview.loadRequest(request);

        log.debug("Initalizing ads complete.");
    }
}

@Override
public void showAds(boolean show) {
    initializeAds();

    final CGSize screenSize = UIScreen.getMainScreen().getBounds().size();
    double screenWidth = screenSize.width();

    final CGSize adSize = adview.getBounds().size();
    double adWidth = adSize.width();
    double adHeight = adSize.height();

    log.debug(String.format("Hidding ad. size[%s, %s]", adWidth, adHeight));

    float bannerWidth = (float) screenWidth;
    float bannerHeight = (float) (bannerWidth / adWidth * adHeight);

    if(show) {
        adview.setFrame(new CGRect((screenWidth / 2) - adWidth / 2, 0, bannerWidth, bannerHeight));
    } else {
        adview.setFrame(new CGRect(0, -bannerHeight, bannerWidth, bannerHeight));
    }

您使用设置广告位置

adview.setFrame(CGRect);
如果您检查CGRect的参数,则如下所示:

CGRect(double x, double y, double width, double height)
0,0坐标(x,y)位于左上角。所以,你的代码

// center of screen
double adX = (screenWidth / 2) - (adWidth / 2);
// bottom of screen
double adY = screenHeight - bannerHeight;

adview.setFrame(new CGRect(adX, adY, bannerWidth, bannerHeight));
还有一件重要的事,你不应该用两种方法操纵定位!你的showAds方法应该是这样的

public void showAds(boolean show) {
    if (show) {
        show();
    } else {
        hide();
    }
}

谢谢这很有效,但现在我的隐藏方法不起作用。你有一个有效的show()方法吗?不用担心。。。我明白了,我只是做了这个,它很有效。。。adview.setFrame(新的CGRect(0,-adHeight,adWidth,adHeight));