Screen height and width in a View - android

I'm getting a "The method getHeight() from the type Display is deprecated" error when trying to get the Height and Width of the screen size, code:
public JumpboyView(MyView mv, Context contextPlay) {
super(contextPlay);
// TODO Auto-generated constructor stub
bBoy = BitmapFactory.decodeResource(getResources(), R.drawable.boy);
Display display = ((WindowManager) contextPlay.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
height = display.getHeight();
and when trying to use getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
I get "The method getWindowManager() is undefined for the type JumpboyView" with 2 fixes available change to getWindowToken() or create method..
Help please?
p.s it used to work on older versions :\

Try this:
Display display = ((WindowManager) contextPlay.getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
Point size = new Point();
display.getSize(size);
height = size.y

Related

Not getting the device's dimension

I am using this code and the view does not fit the whole screen of the device.
DisplayMetrics metricsLandscape = new DisplayMetrics();
getActivity().getWindowManager().getDefaultDisplay().getMetrics(metricsLandscape);
relVideoHolder.setLayoutParams(new RelativeLayout.LayoutParams(metricsLandscape.widthPixels, metricsLandscape.heightPixels));
videoView.setLayoutParams(new RelativeLayout.LayoutParams(metricsLandscape.widthPixels, metricsLandscape.heightPixels));
Log.e("DIMENSIONS", "WIDTH by HEIGHT"+ metricsLandscape.widthPixels+"by"+metricsLandscape.heightPixels);
Log.e("VIDEOHOLDER dimension WxH", ""+relVideoHolder.getWidth()+"x"+relVideoHolder.getHeight());
Log.e("VIDEOVIEW dimension WxH", ""+videoView.getWidth()+"x"+videoView.getHeight());
I find this weird because the result of the Logcat is here;
02-14 17:17:25.881: E/DIMENSIONS(6314): WIDTH by HEIGHT 1196by720
02-14 17:17:25.881: E/VIDEOHOLDER dimension WxH(6314): 720x410
02-14 17:17:25.881: E/VIDEOVIEW dimension WxH(6314): 720x403
I wonder why they have different values. Sometimes, the view covers all the screen, but most of the time, it does not fit the full screen.
Please help me.
By the way, I call these codes onConfigurationChanged when Landscape orientation. Thank you.
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
If you're not in an Activity you can get the default Display via WINDOW_SERVICE:
WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Before getSize was introduced (in API level 13), you could use the getWidth and getHeight methods that are now deprecated:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
I just add getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); to my code and it works like a charm.

Getting screen size and use in drawbit map

This is not my activity! this is separate class file
i am using Surface view extended to my class file . i wanted to display a small bit map to my canvas my bit map is very small than my phone screen so i used a createscaledbitmap to fit it in my phone screen with this code here
Bitmap o2 = Bitmap.createScaledBitmap( hud, 800, 490, false);
it worked great in my phone but when i tested in a bigger phone i have my bitmap pasted only 3/4 of the screen .. so i want to make my bitmap to fix the phone screen size
Bitmap o2 = Bitmap.createScaledBitmap( hud, phonescreenwidth, phonescreenheight, false);
is there a function to get the phone display size and use in my code ?
like
int phonescreenwidth = surfaceView.getwidth ();
and there is a function called protected void onMeasure (int widthMeasureSpec, int heightMeasureSpec)
i dont know how to use it . if someone know please tell me how too :)
Thank you all
BY this way you can get width and height of your device and pass it in your method..
WindowManager manager = (WindowManager) getApplicationContext().getSystemService(Activity.WINDOW_SERVICE);
int width, height;
LayoutParams params;
if (Build.VERSION.SDK_INT > VERSION_CODES.FROYO) {
width = manager.getDefaultDisplay().getWidth();
height = manager.getDefaultDisplay().getHeight();
} else {
Point point = new Point();
manager.getDefaultDisplay().getSize(point);
width = point.x;
height = point.y;
}
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int width = displaymetrics.widthPixels;
Refer here http://developer.android.com/guide/practices/screens_support.html#testing
and
Get screen dimensions in pixels
try this to get Screen size,,
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
then try passing context from ur baseActivity to the current activity
and then try context.getWindowManger....

Positioning a toast with respect to the Screen size

I am displaying a toast in my screen, but the position of the toast appears to vary from device to device, i want the toast to be displayed at one particular position for all the screen sizes.Please help me out with this.
Thanks!
First you need to get the screen dimensions.
Use them to calculate the toast's position, and place it in the appropriate position.
For any one if facing this same problem would suggest you to try this out
IMP is that you are not in the activity class
WindowManager wm = (WindowManager) appContext.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width=size.x;
int height=size.y;
where appcontext is ur own appcontext.
but if you are in the activity class you can use this
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
You may create a custom Toast message with a custom xml layout. Refer this example on Android Developers.

How to get screen resolution of your android device..? [duplicate]

This question already has answers here:
How to get screen dimensions as pixels in Android
(46 answers)
Closed 9 years ago.
Can i get resolution of android phone..?
if yes then how..?
it will really helpful for me..
Thank you..
If you want the display dimensions in pixels you can use getSize:
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
This method was introduced in Android API 13, so if you want to get display metrics for previous APIs use:
DisplayMetrics displaymetrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
int height = displaymetrics.heightPixels;
int wwidth = displaymetrics.widthPixels;
If you're not in an Activity, you can get the default Display via WINDOW_SERVICE. Also be sure to set your minSdkVersion to at least 4 in AndroidManifest.xml to enable calls to display.getWidth().
WindowManager wm = (WindowManager) ctx.getSystemService(Context.WINDOW_SERVICE);
Display display = wm.getDefaultDisplay();
int width = display.getWidth(); // deprecated
int height = display.getHeight(); // deprecated
Edit: PhoneGap
Use the following to figure out the display size in pixels
function getDeviceDimention() {
console.log("Device Dimention using PhoneGap");
console.log("Width = " + window.innerWidth);
console.log("Height = " + window.innerHeight);
}
For Cordova / Phonegap, I've found that using
var width = screen.width
var height = screen.height
is more reliable than using
var width = window.innerHeight
var height = window.innerWidth
in order to obtain the resolution of the current display. The latter is unfortunately inaccurate if your mark-up either overflows or does not take up all of the space available on the screen.
For phonegap you can use this
You can use device-width and device-height
<meta name="viewport" content="width=device-width; user-scalable=no" />
You can even get device height and width using jquery & jquery mobile like this
var width = $(window).width();
var height = $(window).height();
NOTE:- Do this when device is ready.
You can call
Display display = getWindow().getWindowManager().getDefaultDisplay();
Point outSize = new Point();
display.getRealSize(outSize);
outSize.x is the width and outSize.y is the height. Hope it help.
like this
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();
look at this answer Android: How to get screen dimensions
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels;
int height = dm.heightPixels;
Good luck!
DisplayMetrics metrics = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(metrics);
good luck
행운을 빈다.
u can get screen resolution like this
Display display = ((WindowManager) getSystemService(Context.WINDOW_SERVICE)).getDefaultDisplay();
int width = display.getWidth();
int height=display.getHeight();

Class cast exception while using WindowManager in Android

My code to get the screen height dynamically:
Display display = ((Activity) getContext()).getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Error:
Error: java.lang.ClassCastException: android.app.Application
Complete log cat: http://pastebin.com/8zUNFUYn
Edit:
Changed code to this:
Display display = (activity).getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
Worked but, gave a new error that is display.getSize(size) is not a method. Is that API depreceated?
Context
is base class for both Application and Activity. Since your a getting an Application with getContext(), casting it to Activity causes the ClassCastExecption.
replace your line with this :
if you are using this code inside activity then use this:
Display display = this.getContext().getWindowManager().getDefaultDisplay();

Categories

Resources