package com.sf.DarkCalculator; import android.content.ClipboardManager; import android.content.Context; import android.content.Intent; import android.os.Bundle; import android.support.design.widget.Snackbar; import android.text.Editable; import android.text.TextWatcher; import android.view.View; import android.widget.EditText; import android.widget.TextView; public class CapitalMoneyActivity extends BaseActivity { private TextView textOut; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_capital_money); getSupportActionBar().setDisplayHomeAsUpEnabled(true); initTextOut(); initTextIn(); } private void initTextOut() { textOut = (TextView) findViewById(R.id.text_out); AutofitHelper.create(textOut).setMaxLines(6); textOut.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { ClipboardManager cmb = (ClipboardManager) v.getContext().getSystemService(Context.CLIPBOARD_SERVICE); cmb.setText(textOut.getText()); Snackbar.make(v, "已复制转换结果", Snackbar.LENGTH_SHORT).show(); } }); } private void initTextIn() { EditText editIn = (EditText) findViewById(R.id.text_in); AutofitHelper.create(editIn); editIn.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence s, int start, int count, int after) { } @Override public void onTextChanged(CharSequence s, int start, int before, int count) { String str = s.toString(); if (s.length() == 0 || str.equals(".")) { textOut.setText("···"); return; } int i = str.indexOf("."); if (i != -1) { if (str.substring(i, str.length()).length() > 7) { textOut.setText("小数点后不得超过6位"); return; } } textOut.setText(format(s.toString())); } @Override public void afterTextChanged(Editable s) { } }); } private static final char[] cnNumbers = {'零', '壹', '贰', '叁', '肆', '伍', '陆', '柒', '捌', '玖'}; private static final char[] units = {'纳', '微', '毫', '厘', '分', '角', '元', '拾', '佰', '仟', '萬', '拾', '佰', '仟', '億', '拾', '佰', '仟', '兆', '拾', '佰', '仟', '京', '拾', '佰', '仟', '垓', '拾', '佰', '仟', '杼', '拾', '佰', '仟', '穰', '拾', '佰', '仟', '溝', '拾', '佰', '仟', '澗', '拾', '佰', '仟', '正', '拾', '佰', '仟', '載', '拾', '佰', '仟', '極', '拾', '佰', '仟'}; public String format(String s) { if (Double.parseDouble(s) > 10E51) return "数值太大,无法转换"; return this.transform(s); } private String transform(String original) { String integerPart = ""; String floatPart = ""; if (original.indexOf(".") > -1) { int dotIndex = original.indexOf("."); integerPart = original.substring(0, dotIndex); floatPart = original.substring(dotIndex + 1); } else { integerPart = original; } StringBuffer sb = new StringBuffer(); for (int i = 0; i < integerPart.length(); i++) { int number = Integer .parseInt(String.valueOf(integerPart.charAt(i))); sb.append(cnNumbers[number]); sb.append(units[integerPart.length() + 5 - i]); } if (floatPart.length() >= 1) { for (int i = 0; i < floatPart.length(); i++) { int number = Integer.parseInt(String.valueOf(floatPart .charAt(i))); sb.append(cnNumbers[number]); if (i < 6) { sb.append(units[5 - i]); } } } else { sb.append('整'); } return sb.toString(); } public static void actionStart(Context context) { context.startActivity(new Intent(context, CapitalMoneyActivity.class)); } }