package com.hrupin.drawablesizecalculator;
import android.app.Activity;
import android.os.Bundle;
import android.text.Editable;
import android.text.TextUtils;
import android.text.TextWatcher;
import android.view.KeyEvent;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnKeyListener;
import android.view.View.OnTouchListener;
import android.widget.EditText;
import android.widget.Toast;
public class MainActivity extends Activity implements TextWatcher, OnTouchListener {
private EditText etLdpi;
private EditText etMdpi;
private EditText etHdpi;
private EditText etXhdpi;
private EditText etXxhdpi;
private MyTextWatcher twLdpi;
private MyTextWatcher twMdpi;
private MyTextWatcher twHdpi;
private MyTextWatcher twXhdpi;
private MyTextWatcher twXxhdpi;
private float CONST_1333 = 1f + (1f/3f);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
etLdpi = (EditText)findViewById(R.id.editTextLdpi);
etLdpi.setOnTouchListener(this);
etMdpi = (EditText)findViewById(R.id.editTextMdpi);
etMdpi.setOnTouchListener(this);
etHdpi = (EditText)findViewById(R.id.editTextHdpi);
etHdpi.setOnTouchListener(this);
etXhdpi = (EditText)findViewById(R.id.editTextXhdpi);
etXhdpi.setOnTouchListener(this);
etXxhdpi = (EditText)findViewById(R.id.editTextXxhdpi);
etXxhdpi.setOnTouchListener(this);
twLdpi = new MyTextWatcher(etLdpi);
twMdpi = new MyTextWatcher(etMdpi);
twHdpi = new MyTextWatcher(etHdpi);
twXhdpi = new MyTextWatcher(etXhdpi);
twXxhdpi = new MyTextWatcher(etXxhdpi);
}
class MyTextWatcher implements TextWatcher{
private EditText mE;
public MyTextWatcher(EditText e) {
mE = e;
}
@Override
public void afterTextChanged(Editable s) {
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
String str = s.toString();
if(TextUtils.isEmpty(s.toString())){
str = "0";
}
float i = Float.parseFloat(str);
if(mE.getId() == etLdpi.getId()){
float mdpi = i * CONST_1333;
etMdpi.setText(mdpi + "");
etHdpi.setText(mdpi * 1.5f + "");
etXhdpi.setText(mdpi * 2f + "");
etXxhdpi.setText(mdpi * 3f + "");
}
if(mE.getId() == etMdpi.getId()){
float mdpi = i;
etLdpi.setText(mdpi / CONST_1333 + "");
etHdpi.setText(mdpi * 1.5f + "");
etXhdpi.setText(mdpi * 2f + "");
etXxhdpi.setText(mdpi * 3f + "");
}
if(mE.getId() == etHdpi.getId()){
float mdpi = i / 1.5f;
etLdpi.setText(mdpi / CONST_1333 + "");
etMdpi.setText(mdpi + "");
etXhdpi.setText(mdpi * 2f + "");
etXxhdpi.setText(mdpi * 3f + "");
}
if(mE.getId() == etXhdpi.getId()){
float mdpi = i / 2f;
etLdpi.setText(mdpi / CONST_1333 + "");
etMdpi.setText(mdpi + "");
etHdpi.setText(mdpi * 1.5f + "");
etXxhdpi.setText(mdpi * 3f + "");
}
if(mE.getId() == etXxhdpi.getId()){
float mdpi = i / 3f;
etLdpi.setText(mdpi / CONST_1333 + "");
etMdpi.setText(mdpi + "");
etHdpi.setText(mdpi * 1.5f + "");
etXhdpi.setText(mdpi * 2f + "");
}
}
}
@Override
public void afterTextChanged(Editable s) {
Toast.makeText(this, etLdpi.getText().toString(), Toast.LENGTH_SHORT).show();
}
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
// TODO Auto-generated method stub
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
// TODO Auto-generated method stub
}
@Override
public boolean onTouch(View v, MotionEvent event) {
if(v.getId() == etLdpi.getId()){
clearTextWatchers();
etLdpi.addTextChangedListener(twLdpi);
}
if(v.getId() == etMdpi.getId()){
clearTextWatchers();
etMdpi.addTextChangedListener(twMdpi);
}
if(v.getId() == etHdpi.getId()){
clearTextWatchers();
etHdpi.addTextChangedListener(twHdpi);
}
if(v.getId() == etXhdpi.getId()){
clearTextWatchers();
etXhdpi.addTextChangedListener(twXhdpi);
}
if(v.getId() == etXxhdpi.getId()){
clearTextWatchers();
etXxhdpi.addTextChangedListener(twXxhdpi);
}
return false;
}
private void clearTextWatchers() {
etLdpi.removeTextChangedListener(twLdpi);
etMdpi.removeTextChangedListener(twMdpi);
etHdpi.removeTextChangedListener(twHdpi);
etXhdpi.removeTextChangedListener(twXhdpi);
etXxhdpi.removeTextChangedListener(twXxhdpi);
}
}