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>