Friday, February 14, 2014

Android - How To Get Screen Size

Android - How To Get Screen Size

from http://stackoverflow.com/questions/2485697/getting-the-size-of-the-window-without-title-notification-bars

15down voteaccepted
Use View.MeasureSpec.getSize method in onMeasure override.
    @Override
protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
{
    super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    int width = MeasureSpec.getSize(widthMeasureSpec);
    int height = MeasureSpec.getSize(heightMeasureSpec);
    ...
}
share|improve this answer
 
Evgeny's answer led me here, which answered the rest of my questions developer.android.com/guide/topics/ui/custom-components.html –  Stanley.Goldman Sep 10 '10 at 0:09
add comment

To accomplish this in my app, I had to find a View's dimensions within the main Activity. It looked something like this:
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    gestureScanner = new GestureDetector(this);   //Object for handling gestures.

    mvView = new MyView(this);  //MyView is class that extends View.
    setContentView(myView);
}

@Override
public void onShowPress(MotionEvent e) {

    //Returns the size of the entire window, including status bar and title.
    DisplayMetrics dm = new DisplayMetrics();
    this.getWindowManager().getDefaultDisplay().getMetrics(dm);

    //Try to find the dimension of the view without the status/title bars.
    int iViewHeight = mvMountain.getHeight();
    int iViewWidth = mvMountain.getWidth();


    Toast toast = Toast.makeText(this," View:" + iViewWidth + ","+iViewHeight + " Window: " + dm.widthPixels + " by " + dm.heightPixels, 2);
    toast.show();
}
share|improve this answer
add comment

I have a tutorial on my blog that give you the ability to save your screen size on launch, You can read it here: http://evgeni-shafran.blogspot.com/2011/01/android-screen-size-problem.html
Basicly you need to overide an onMeasure method of the first layout that hold you full screen, and get the width and height from there
share|improve this answer
add comment

have a look at getwidth() and getheight() maybe? that should give you the size of the screen. though, I don't know If it takes the bars or not. But I don't think so...
share|improve this answer
1  
Which getWidth/getHeight methods are you talking about? I might not have been clear enough in the question, sorry. I'm developing for Android, not BlackBerry, so Screen.getWidth() isn't what I'm looking for. –  Victor Mar 22 '10 at 1:02
 
getwidth does not apply to the screen but to a view or layout. (I understood you were on android as you tagged your question so ;)) So if you put for instance a Relative layout with attributes fill_parent for its width and height and do getwidth and getheight in your code, I think it should give you satifaction –  Sephy Mar 22 '10 at 7:44
add comment

in the first onDraw, call getWidth, getHeight. these will not be valid before then.
if you are not using a custom view/layout then you can instead call getWidth/getHeight during the first onWindowFocusChanged

No comments:

Post a Comment