Positioning a toast with respect to the Screen size - android

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.

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.

Screen height and width in a View

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

How can I put a linearlayout at a random place of the screen?

My request is quite simple: I just want to display some text at a random place of the screen.
I was expecting, as I used:
int x = r.nextInt(width - layout.getWidth());
and
int y = r.nextInt(height - layout.getHeight());
that my layout would perfectly fit the screen.
Unfortunately, my text is sometimes at the right of the screen and appear in multiple lines!
Here is my code
LinearLayout layout = new LinearLayout(this);
layout.setOrientation(LinearLayout.VERTICAL);
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
int width = size.x;
int height = size.y;
layout.addView(clock);
layout.addView(txtView);
Random r = new Random();
int x = r.nextInt(width - layout.getWidth());
int y = r.nextInt(height - layout.getHeight());
layout.setPadding(x, y, 0, 0);
setContentView(layout);
Use RelativeLayout as your container instead of LinearLayout as this is what is is designed for.
The big problem I had was that
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
returns a value including the top statusBar (or notification, don't know how to call it) and the software buttons at the bottom.
The solution was to create a dummy layout in background and measure it.

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();

Emulator does not return actual width and height for 320x240 resolution

I made an application with a dynamic layout for different screen sizes.
It also worked for all screen sizes except of 320x240 screens.
I used the same code to get the width and height for all and it also return the correct value but the it does not return the correct value for manually create emulator means 320x240 and 240x400.
I used the following code:
DisplayMetrics metrics = new DisplayMetrics();
WindowManager manager = (WindowManager)getSystemService(Context.WINDOW_SERVICE);
manager.getDefaultDisplay().getMetrics(metrics);
int width=metrics.widthPixels;
int height=metrics.heightPixels;
I am late..but would like to share :)
Please try below code snippets:
Display display = getWindowManager().getDefaultDisplay();
int width = display.getWidth();
int height = display.getHeight();

Categories

Resources