I have been developing Android recently, and I am creating an application in the Android studio, and I want my application to have the same design on all devices:
Samsung Galaxy S4 => 1080x1290; 5.0 "
Galaxy Nexus => 720x1280; 4.7 "
Nexus 4 => 768x1280; 4.7 "
Motorola Droid Razr M => 540x960; 4.3 "
Nexus S => 480x800; 4"
Galaxy S2 => 480x800; 4.3 "
Galaxy Ace => 320x480; 3.5 "
Galaxy Note => 800x1280; 5.3 "
Galaxy Note II => 720x1280; 5.5 "
Nexus 10 => 2560 x 1600; 10.1 "
Galaxy Tab 10.1 => 1280 * 800; 10.1 "
Galaxy Note 8.0 => 1280 * 800; 8.0 "
Galaxy Tab 7.7 => 1280 * 800; 7.7 "
Nexus 7 => 1280 * 800; 7.0 "
Galaxy Tab => 1024 * 600; 7.0 "
and I read these and many questions here
http://developer.android.com/training/multiscreen/index.html
http://developer.android.com/guide/practices/screens_support.html#DeclaringTabletLayouts
I used width / height in "dp" and did it with all the elements
android:layout_margin android:paddingLeft android:paddingRight android:paddingTop android:paddingBottom
and it works fine, but since I know that there is a method that reads the device’s screen, then decide which layout will open in the application, suppose I have one layout and I have these sizes for it
res / layout / main_activity.xml # For mobile phones (available width less than 600dp) res / layout-sw600dp / main_activity.xml # For 7-inch tablets (600dp wide and more) res / layout-sw720dp / main_activity.xml # For 10 inch tablets (720dp wide and larger)
My question is: how do I code my Java activity to read the screen of the device my application is running on and then decide which layout will be open, as if the device was S2, then java will do something like this:
if (tabletDeviceSize) { //use tablet support layout } else { //another layout for mobile support }
I see this code, but I need the full one, because I'm not perfect in coding :(
DisplayMetrics metrics = new DisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(metrics); switch(metrics.densityDpi){ case DisplayMetrics.DENSITY_LOW: break; case DisplayMetrics.DENSITY_MEDIUM: break; case DisplayMetrics.DENSITY_HIGH: break; }