Multiple screen support

Android screen sizes support:

Formula:

36x36 (0.75x) for low-density (ldpi)

48x48 (1.0x baseline) for medium-density (mdpi)

72x72 (1.5x) for high-density (hdpi)

96x96 (2.0x) for extra-high-density (xhdpi)

144x144 (3.0x) for extra-extra-high-density (xxhdpi)

192x192 (4.0x) for extra-extra-extra-high-density (xxxhdpi)

Output:

MainActivity.java

import android.support.v7.app.AppCompatActivity;

import android.os.Bundle;

import android.text.Editable;

import android.text.TextWatcher;

import android.widget.EditText;

import android.widget.LinearLayout;

import butterknife.BindView;

import butterknife.ButterKnife;

public class MainActivity extends AppCompatActivity {

@BindView(R.id.main_et)

EditText mETMain;

@BindView(R.id.main_ll)

LinearLayout mLLHidable;

@BindView(R.id.main_mdpi_et)

EditText mETMdpi;

@BindView(R.id.main_hdpi_et)

EditText mETHdpi;

@BindView(R.id.main_xdpi_et)

EditText mETXhdpi;

@BindView(R.id.main_xxdpi_et)

EditText mETXXHdpi;

@BindView(R.id.main_xxxdpi_et)

EditText mETXXXHdpi;

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

ButterKnife.bind(this);

mETMain.addTextChangedListener(new TextWatcher() {

@Override

public void beforeTextChanged(CharSequence charSequence, int i, int i1, int i2) {

}

@Override

public void onTextChanged(CharSequence charSequence, int i, int i1, int i2) {

if(isValidNumber(charSequence)) writeDimensionsToFields(Integer.parseInt(charSequence.toString()));

}

@Override

public void afterTextChanged(Editable editable) {

}

});

}

private static boolean isValidNumber(CharSequence number){

try {

Integer.parseInt(String.valueOf(number));

return true;

} catch (NumberFormatException e) {

e.printStackTrace();

return false;

}

}

private void writeDimensionsToFields(int diemsion){

mETMdpi.setText(""+getLdpiFont(diemsion));

mETHdpi.setText(""+getHdpiFont(diemsion));

mETXhdpi.setText(""+getXHdpiFont(diemsion));

mETXXHdpi.setText(""+getXXHdpiFont(diemsion));

mETXXXHdpi.setText(""+getXXXHdpiFont(diemsion));

}

private double getLdpiFont(int mdpiFont){

return mdpiFont*.75;

}

private double getHdpiFont(int mdpiFont){

return (mdpiFont* 1.5);

}

private double getXHdpiFont(int mdpiFont){

return (mdpiFont* 2);

}

private double getXXHdpiFont(int mdpiFont){

return (mdpiFont* 3);

}

private double getXXXHdpiFont(int mdpiFont){

return (mdpiFont* 4);

}

}

activity_main.xml

<?xml version="1.0" encoding="utf-8"?>

<LinearLayout android:layout_width="match_parent"

android:layout_height="match_parent"

xmlns:android="http://schemas.android.com/apk/res/android"

android:orientation="vertical">

<EditText

android:id="@+id/main_et"

android:layout_width="match_parent"

android:layout_height="wrap_content"

android:hint="Enter mdpi dimension value"

android:gravity="center"

android:inputType="number"/>

<LinearLayout

android:id="@+id/main_ll"

android:layout_width="match_parent"

android:layout_height="wrap_content">

<TableLayout

android:layout_width="match_parent"

android:layout_height="wrap_content">

<TableRow>

<TextView

android:layout_weight=".5"

android:text="ldpi"/>

<EditText

android:layout_weight=".5"

android:id="@+id/main_mdpi_et"/>

</TableRow>

<TableRow>

<TextView

android:layout_weight=".5"

android:text="Hdpi"/>

<EditText

android:layout_weight=".5"

android:id="@+id/main_hdpi_et"/>

</TableRow>

<TableRow>

<TextView

android:layout_weight=".5"

android:text="xhdpi"/>

<EditText

android:layout_weight=".5"

android:id="@+id/main_xdpi_et"/>

</TableRow>

<TableRow>

<TextView

android:layout_weight=".5"

android:text="xxHdpi"/>

<EditText

android:layout_weight=".5"

android:id="@+id/main_xxdpi_et"/>

</TableRow>

<TableRow>

<TextView

android:layout_weight=".5"

android:text="xxxHdpi"/>

<EditText

android:layout_weight=".5"

android:id="@+id/main_xxxdpi_et"/>

</TableRow>

</TableLayout>

</LinearLayout>

</LinearLayout>