Take the 2-minute tour ×
Game Development Stack Exchange is a question and answer site for professional and independent game developers. It's 100% free, no registration required.

When displaying a background, AndEngine produces black bars above the image on certain devices. How do I support variable screen ratios for different devices using AndEngine?

share|improve this question
    
Can you clarify this a bit? –  Cameron Fredman Feb 28 '13 at 7:23
    
i am getting a black screen on top of my 9 patch image.When i run my code. In my small size device this image working well but when i am using tablet it display with some black screen on top of this image.I want to use this one image in different size of screen. All devices must be supported. –  Maan Feb 28 '13 at 8:51
add comment

2 Answers

up vote 5 down vote accepted

I believe what you're asking is how to get rid of letterboxing, like this:

enter image description here

By default, AndEngine assumes you want some fixed aspect ratio. It then uses letterboxing to handle devices with different display aspect ratios then what you're providing. The advantage is you have certainty about your layout.

There's more than one approach to get rid of them, but here's what I do. The following code takes a fixed height (in this case 320) and adjusts the width based on the aspect ratio of the device.

//Pick some value for your height.
float cameraHeight = 320;

//Get the display metrics object.
final DisplayMetrics displayMetrics = new DisplayMetrics();

//Populate it with data about your display.
this.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics);

//Calculate the aspect ratio ofthe device.
float aspectRatio = (float) displayMetrics.widthPixels / (float) displayMetrics.heightPixels;

//Multiply the aspect ratio by the fixed height.
float cameraWidth = Math.round(aspectRatio * CAMERA_HEIGHT);

//Create the camera using those values.
this.mCamera = new Camera(0, 0, cameraWidth, cameraHeight);
share|improve this answer
    
Not on both side blank (top and Bottom) but only on top side i am getting blank screen. –  Maan Feb 28 '13 at 9:10
1  
@Maan Nonetheless, does this resolve it? Also, might help if you post a screenshot. –  Cameron Fredman Feb 28 '13 at 9:22
    
sorry ,i cant' send you screen shots as a image because i have only 2 reputation. –  Maan Feb 28 '13 at 9:30
    
i am trying to implement the code which you give n to me but what is GameConstant. I am getting red mark on that line. –  Maan Feb 28 '13 at 9:31
    
ok i am getting thank you.. –  Maan Feb 28 '13 at 9:33
show 10 more comments

I used CropResolutionPolicy, a new policy developed by Martin, check it out here http://android.kul.is/2013/10/andengine-tutorial-dealing-with-screen-sizes.html

share|improve this answer
    
This would be a better answer if it summarized the techniques explained in the link. –  Josh Petrie 2 days ago
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.