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