I am using to add a simple banner to my app (a game written using openGL ES 2.0) - Please note, I am not using any XML, everything is done in code
I've tried to Google this and look around on SO but I can't find any info at all - how do we deal with screen fragmentation when using AdMob?
My App is locked to Landscape mode.
For instance, I run my app on a tablet (with a resolution of 2560 x 1600) and everything looks great:
Then I run it on a old Galaxy Ace phone (with a resolution of 480 x 320) and I get this:
Obviously, this is wrong for a number of reasons (banner too big generally, too close to the controls, extends down to bottom of screen when I really want it only to extend down to the bottom of the GLViewPort (if this is even possible) - basically, every single object in my game is scaled so that it will appear at the same relative size on every screen / DPI as well as retaining the ratio for which it was intended. I've spend a very long time making sure the game looks and feels the same on every device!
As it is, the banners are completely useless on the phone. Am I stuck with this? Is there anything I can do here? Can I make the banner any smaller? Is there any way at all that I can scale it myself? Basically, I guess what I'm asking is do I have any real control over these banners?
I've looked at Google's Official documentation too and I don't find it great. Same goes with AdMob's help.
I'm very new to AdMob and have been trying all day to figure out a way to do this, any help would be appreciated.
Code:
Code
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// Create an ad.
adView = new AdView(this);
adView.setAdSize(AdSize.BANNER);
adView.setAdUnitId(AD_UNIT_ID);
// Add the AdView to the view hierarchy. The view will have no size
// until the ad is loaded.
RelativeLayout layout = new RelativeLayout(this);
layout.setLayoutParams(new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT));
// Create an ad request. Check logcat output for the hashed device ID to
// get test ads on a physical device.
AdRequest adRequest = new AdRequest.Builder()
.addTestDevice(TestDeviceID)
.build();
// Start loading the ad in the background.
adView.loadAd(adRequest);
//Request full screen
requestWindowFeature(Window.FEATURE_NO_TITLE);
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN,
WindowManager.LayoutParams.FLAG_FULLSCREEN);
//Create a displayMetrics object to get pixel width and height
metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
width = metrics.widthPixels;
height = metrics.heightPixels;
//Work out values for resizing screen while keeping aspect ratio
width = (int) Math.min(width, height * 1.702127659574468);
height = (int) Math.min(height, width / 1.702127659574468);
//Create and set GL view (OpenGL View)
myView = new MyGLSurfaceView(MainActivity.this);
RelativeLayout.LayoutParams adParams =
new RelativeLayout.LayoutParams(RelativeLayout.LayoutParams.WRAP_CONTENT,
RelativeLayout.LayoutParams.WRAP_CONTENT);
adParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
adParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
//Set the colour if we don't, the ad won't show (bug?)
adView.setBackgroundColor(Color.BLACK);
layout.addView(myView);
layout.addView(adView, adParams);
//Create a copy of the Bundle
if (savedInstanceState != null){
newBundle = new Bundle(savedInstanceState);
}
setContentView(layout);
}