I want to support my android screen in multiple screen sizes but i can do it with maintaining multiple xml layout file's
but according to requirement it i supposed to be done with the single XML layout in order to optimize the app usage.
so please can you help me i have gone through multiple tutorials multiple links but not able to get last option with stack overflow
The best way to create a responsive layout is to use ConstraintLayout as the base layout in your UI. ConstraintLayout enables you to specify the position and size of each view according to spatial relationships with other views in the layout. All the views can then move and resize together as the screen size changes.
res/sw600dp/layout. xml -> will be used for all screen sizes bigger or equal to 600dp. This does not take the device orientation into account. 2) Available Screen Width - Specifies a minimum available width in dp units at which the resources should be used.
The Android system itself also provides scaling and resizing to make the Android application support multiple screen sizes and densities, to some extent. Still you should always try to provide such support yourself. 1. Set support screens in the Manifest file 2. Provide various layouts for various screen sizes 3.
To make the app load different layout files for multiple size screens, we need to follow the below steps. Modify app / res / layout / activity_multiple_fragment.xml file as below. Now the layout file only contains one left fragment. Create a folder layout-large under app / src / main / res folder.
To make the layout-large folder visible in android studio, you need to switch to Project mode in the left panel. large is just one layout qualifier, the layout file under layout-large folder will be used when android OS thinks the device screen size is large.
There are a lot of android devices with different screen sizes and resolutions. This article will tell you how to make an android program load layout files dynamically based on the device’s screen resolution or size at run time.
drawable:
For images, you have to manage different drawable folders as per screen resolution:
drawable-ldpi //240x320
drawable-mdpi //320x480
drawable-hdpi //480x800
drawable-xhdpi //720x1280
drawable-xxhdpi //1080X1920
drawable-xxxhdpi //1440X2560
drawable-tvdpi // nexus 7 etc
drawable-xlarge-xhdpi //tablet like nexus 10
dimes: For dimens, If you are using different static dimes as per your UI then you have to define them respected to their values... folders.
Values folder for different smart phones resolutions:
values-ldpi\dimens.xml
values-mdpi\dimens.xml
values-hdpi\dimens.xml
values-xhdpi\dimens.xml
values-xxhdpi\dimens.xml
values-xxxhdpi\dimens.xml
Note: If you are using sp/sip/dp/dip then these values will be adjusted based on the density of device. e.g Suppose you had set 10sp for TextView in mdpi(320X480) resolution device. Then this same value will be auto adjusted for other resolutions.
mdpi(10sp==10px)
hdpi(15px)
xhdpi(20px)
xxhdpi(30px)
xxxhdpi(40px)
These are the some general usage values folder which are used to manage dimens related to their screen resolutions.
Different values folder for different screens:
values-sw720dp 10.1” tablet 1280x800 mdpi
values-sw600dp 7.0” tablet 1024x600 mdpi
values-sw480dp 5.4” 480x854 mdpi
values-sw480dp 5.1” 480x800 mdpi
values-xxxhdpi 1440X2560 xxxhdpi
values-xxhdpi 1080X1920 xxhdpi
values-xhdpi 4.7” 1280x720 xhdpi
values-xhdpi 4.65” 720x1280 xhdpi
values-hdpi 4.0” 480x800 hdpi
values-hdpi 3.7” 480x854 hdpi
values-mdpi 3.2” 320x480 mdpi
values-ldpi 3.4” 240x432 ldpi
values-ldpi 3.3” 240x400 ldpi
values-ldpi 2.7” 240x320 ldpi
For knowledge in depth go with Support screen resolution
Create three different Layouts Folder
in your res
folder for all devices and use the dimensions accordingly.
Generic Layout Folders
res/layout-small
res/layout-normal
res/layout-large
res/layout-xlarge
After you are done with making your Normal/Medium Layouts follow these steps:
For converting Values
0.75 - ldpi (small) //mdpi dimens *0.75
1.0 - mdpi (normal) //First create these dimensions
1.5 - hdpi (large) //mdpi dimens *1.5
2.0 - xhdpi (xLarge) //mdpi dimens *2.0
For Example
android:layout_width="66dip" //in normal
android:layout_width="100dip"//in large 66*1.5=100(approx)
android:layout_width="52dip" //in small 66*0.75=52(approx)
Also new Qualifier has been introduced - SmallestWidth - AvailableScreenWidth - AvailableScreenHeight
read more about it here https://developer.android.com/guide/practices/screens_support.html
I hope this helps.
May be you can try below library which manages all the screen size resolution automatically.
compile 'com.intuit.sdp:sdp-android:1.0.4'
You need to just add the dependency in your build.gradle file and you are done.
You need to specify like:
android:layout_height="@dimen/_10sdp"
Instead of usual:
android:layout_height="@dimen/10dp"
If you provide text size as sp and other dimensions as dp. Android will automatically adjust for different layouts based on density of devices. If you want to control the values, you can put values in dimens.xml in each of values folders. The values folder inside res for different density devices will be following :
values-ldpi\dimens.xml
values-mdpi\dimens.xml
values-hdpi\dimens.xml
values-xhdpi\dimens.xml
values-xxhdpi\dimens.xml
values-xxxhdpi\dimens.xml
Well that depends on your code
Drawables
Use every DPI
FolderLook at these Links
1)https://developer.android.com/training/multiscreen/screensizes.html
2)How to support different screen size in android
3)Supporting multiple screen size - Android
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With