I developed my application specifically for 10" tablets.
I used DP mostly, and some weighting for other elements, however; I'm unable to use an AVD but I have my Nexus 4. The UI looks gigantic on my phone, due to the DP. Is there any way to scale DP without rewriting my code? Some sort of manifest scale?
Thanks.
No. There's no way. I advise you to run the emulator with a big screen (10') and a lower DPI. (QVGA for example), you might find it possible to work with it that way, and it will reflect good the app dimensions.
Related
I have finished my app and it looks great on phones (regardless of the density). Is there a way (attribute or generic method I can call or some sort of settings) that would just make all the screen elements ( images, buttons and texts) bigger for large screens such as tablets.
I remember one of the tablets (I think TF), had an option to just scale up the whole app to fit the screen. This could be only a feature of that specific company or it could be an attribute set on the app. Perhaps I can achieve the same behavior?
PS: I know some may disagree saying that this may not look good on tablet, not the right way and that specific layouts should be provided for large screens but that's ok. I have considered that and I am ok with my approach. My app target is mainly phones but if it runs on 7 or 10 inch tablet (rarely), I want everything just bigger.
Thank you
I developed and application and uploaded all the images in the respective drawable folders (different pixels for different desnities).
Now I am confused when it comes to layout. If I used the layout editor with 4.1 inc (thats considered Med screen I guess?) everything looks great.
Now when I use the editor with 10.1 inch which is the tablet, then I see icons very small and the text is small. I have not run the emulator yet.
So I am wondering:
1- why would the text be small although I didn't specify text size? Shouldnt scalle appropriately? or should I give it a specific size for bigger layouts?
2- Why the icons are small given that I provided the different drawables? I thought it would scale up accordingly.
Please don't give me the supporting multiple screens link in android as an answer, as I already went through it and still no luck with above. I need your personal advice as I think I am missing something here
Thank you so much in advance
Android support for different screens is a little tricky. That's because you can have large, small, medium and xlarge screens, plus high, medium and low density ones. There are a dozen possibilities (xlarge low density, small high density) and not a single resolution is defined. So you must know the principles which the API is designed upon and must define your layout thinking about the role the widget has inside your UI. You also must bear in mind that your layout won't be pixel perfect on 100% of devices, so your aim should be being usable on all possible devices.
In your specific case it seems that either you don't manage to specify the correct resources, or the system doesn't pick up the right ones for you, but I must remark that it doesn't make sense on Android to talk about big, small and scale: you should design your layout with a (good) webdeveloper mindset, who daily deals with tons of different displays, resolutions, physical sizes and even devices.
I also suggest not using the graphical builder if you are new to Android, because you really need to know how Android lays out components, otherwise you will come back to SO very often :)
If you do not specify the text size in your layout file Android will take the default value, which is most likely in DIP (density independent pixel) therefore it will be the same physical size on any devices. That should explain why the text looks so small on your 10 inch tablet.
What I would do in this case is have 3 layouts for each activities and specify the text size for larger devices (given you already like the look on phones) and put them in this folder scheme :
res/layout/layout.xml // phones
res/layout-sw600dp/layout.xml // 7” tablets
res/layout-sw720dp/layout.xml // 10” tablets
Information above was taken in this article. I have this applied in my current personal project and so far it works like a charm.
Secondly, as far as icons go, I'm no drawable expert but if you provided the same file in each folder (like I think you did from what I understand in your question), it will not make it scale. You'll have to create 4 difference icons, one for each possible pixel density.
Information about icon sizes can be found on this page.
Hope this is of some help to you.
My experience with the Android device zoo drew me to the sad conclusion that the built-in screen size/layout facility is useless. Cases in point, straight from support:
a 10 inch tablet with Android 2.2. Screen size xlarge is not supported by Android 2.2
Kindle Fire, which is 7 inch and claims it's xlarge.
I ended up putting all three layouts (med/large/xlarge) into layout, loading one based on run-time density and resolution, and providing an option for user to force a specific layout.
Just sayin'.
I would like to test my app-layout with different resolutions. Therfore I created an emulator-device with a resolution of 480x832 (the same as my motorola droid/milestone).
I did all my layout_width with "fill_parent" or with dp - but what looks good on the device (e.g. filling up the whole width) is much too small in the emulator. fill_parent works, but layouts with dp are a lot different.
What am I doing wrong?
Thanks a lot!
As Asahi pointed out in the comments, the density of the screen is also important. You should set that to 240, the density of the Droid. However, it is hard to emulate a phone screen exactly on a monitor because the monitor has a much lower pixel density. Therefore, your emulator will look very large in comparison to the actual device.
This article goes into more details on handling multiple screen sizes in the emulator.
How big is the smallest motorola android's screen, in pixels? I want to know what size I need to make my graphic without it being too distorted by the fill_parent.
Although this doesn't directly answer your question..
Android is the name of the operating system running on Android phones. Different phone models could have different resolutions and pixel densities. Therefore you have to be careful not to hardcode resolution values into your code. It might run well on one phone but poorly on another.
Check out these pages for details about supporting different screens:
http://developer.android.com/guide/practices/screens_support.html
http://developer.android.com/resources/dashboard/screens.html
It would be unwise to program for one screen size, especially if you plan on distributing your application later. You should design your application for as many screen sizes as possible.
Instead use nine-patch images and flexible layouts.
If you are designing an icon, the look at the android icon design guidelines and consider high, medium and low density screens. There are different resource folders for these too and android takes care of selecting the appropriate one for the current device.
motorola droid's display size is 480x854 px, according to specs, so it's rather non-standard
I'm trying to alter the default screen resolution of the Android emulator (and by extension, the Android device) to work at 1700x1200. In other words, I need the screen to be able to display unique points over that range.
I have set the dimensions in my layout file, yet the device still defaults to 320x480. I've set different dpi densities, but to no avail.
Any help would be great, even just a direction to explore.
EDIT: Thanks for the two responses. I guess my question wasn't clear - I understand that the top resolution for the device is fixed, but I need to scale the screen to display with finer granularity than just 640X850 (which I believe is the highest resolution). I understand you can set dpi density from 120-240, but I need to know how to set the scaling functionality to simulate a screen of 1700x1200. My guess is that it will have to be done by my code, but I would prefer for the platform to auto-scale it down for me. This may not be possible, but I just wanted to check.
Using Android SDK 2.0 or 2.1 you can create an AVD with a custom resolution. If you want you can also run the emulator with the -skin argument, for instance emulator -skin 1700x1200 and you'll get what you want.
May be i'm not completely understand that. You want physical device such as ADP1 phone for example, to have 1700x1200 ? If it that you want - i have some bad news - if you look at any device spec you'll see resolution listed. It's there because it characteristic of physical screen. It can't be changed.