实例介绍
【实例简介】
【实例截图】
【实例截图】
【核心代码】
package com.codemany.chinesecard; import java.util.GregorianCalendar; import android.app.Activity; import android.app.AlertDialog; import android.content.Intent; import android.content.pm.PackageManager.NameNotFoundException; import android.inputmethodservice.Keyboard; import android.inputmethodservice.KeyboardView; import android.inputmethodservice.KeyboardView.OnKeyboardActionListener; import android.net.Uri; import android.os.Bundle; import android.text.Editable; import android.text.InputType; import android.util.Log; import android.view.Menu; import android.view.MenuItem; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; public class QueryActivity extends Activity { private static final String TAG = QueryActivity.class.getName(); // wi = 2(n-1)(mod 11) private final int[] wi = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2, 1}; // check code private final int[] vi = {1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2}; private KeyboardView kbdView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.tab_query); kbdView = (KeyboardView)findViewById(R.id.kbd_view); kbdView.setKeyboard(new Keyboard(this, R.xml.qwerty)); kbdView.setEnabled(true); kbdView.setPreviewEnabled(true); kbdView.setOnKeyboardActionListener(new OnKeyboardActionListener() { @Override public void onKey(int primaryCode, int[] keyCodes) { Log.d(TAG, "onKey? primaryCode=" primaryCode); int n1 = 0; // -1 count for (int keyCode : keyCodes) { if (keyCode == -1) { n1 ; continue; } Log.d(TAG, "keyCode=" keyCode); } Log.d(TAG, "keyCode=-1 *" n1); EditText edit = (EditText)findViewById(R.id.edt_id_number); Editable editable = edit.getText(); int start = edit.getSelectionStart(); if (primaryCode == Keyboard.KEYCODE_CANCEL) { hideKeyboard(); } else if (primaryCode == Keyboard.KEYCODE_DELETE) { if (editable != null && editable.length() > 0) { editable.delete(start - 1, start); } } else if (primaryCode == 57419) { // go left if (start > 0) { edit.setSelection(start - 1); } } else if (primaryCode == 57421) { // go right if (start < edit.length()) { edit.setSelection(start 1); } } else { editable.insert(start, Character.toString((char)primaryCode)); } } @Override public void onPress(int primaryCode) { Log.d(TAG, "onPress? primaryCode=" primaryCode); } @Override public void onRelease(int primaryCode) { Log.d(TAG, "onRelease? primaryCode=" primaryCode); } @Override public void onText(CharSequence text) { Log.d(TAG, "onText? \"" text "\""); } @Override public void swipeDown() { Log.d(TAG, "swipeDown"); } @Override public void swipeLeft() { Log.d(TAG, "swipeLeft"); } @Override public void swipeRight() { Log.d(TAG, "swipeRight"); } @Override public void swipeUp() { Log.d(TAG, "swipeUp"); } }); EditText edtIdNumber = (EditText)findViewById(R.id.edt_id_number); edtIdNumber.setInputType(InputType.TYPE_NULL); edtIdNumber.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { showKeyboard(); } }); Button btnQuery = (Button)findViewById(R.id.btn_query); btnQuery.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { clearResultText(); String number = getIdNumber(); if (number.length() != 15 && number.length() != 18) { showErrorMessage(R.string.error_must_be_fifteen_or_eighteen); return; } if (number.length() == 15) { number = upgradeIdNumber(number); } StringBuilder sb = new StringBuilder(); sb.append(getString(R.string.result_query_prompt)); sb.append("\n").append(getString(R.string.result_identity_number)).append(number); sb.append("\n").append(getString(R.string.address)).append(getAddress(number)); sb.append("\n").append(getString(R.string.birth)).append(getBirth(number)); sb.append("\n").append(getString(R.string.age)).append(getAge(number)); sb.append("\n").append(getString(R.string.gender)).append(getGender(number)); showResult(sb.toString()); } }); Button btnVerify = (Button)findViewById(R.id.btn_verify); btnVerify.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { clearResultText(); String number = getIdNumber(); if (number.length() != 18) { showErrorMessage(R.string.error_must_be_eighteen); return; } String checkCode = getCheckCode(number.substring(0, 17)); if (checkCode.equalsIgnoreCase(number.substring(17, 18))) { showResult(getString(R.string.result_verify_success)); } else { showResult(getString(R.string.result_verify_failure) checkCode); } } }); Button btnUpgrade = (Button)findViewById(R.id.btn_upgrade); btnUpgrade.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { clearResultText(); String number = getIdNumber(); if (number.length() != 15) { showErrorMessage(R.string.error_must_be_fifteen); return; } number = upgradeIdNumber(number); showResult(getString(R.string.result_upgrade_prefix) number); } }); Button btnClear = (Button)findViewById(R.id.btn_clear); btnClear.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { clearResultText(); EditText edit = (EditText)findViewById(R.id.edt_id_number); edit.setText(""); } }); } private void hideKeyboard() { int visibility = kbdView.getVisibility(); if (visibility == View.VISIBLE) { kbdView.setVisibility(View.INVISIBLE); } } private void showKeyboard() { int visibility = kbdView.getVisibility(); if (visibility == View.GONE || visibility == View.INVISIBLE) { kbdView.setVisibility(View.VISIBLE); } } private void clearResultText() { TextView resultEdit = (TextView)findViewById(R.id.tv_result); resultEdit.setText(""); } private String upgradeIdNumber(String number) { StringBuilder sb = new StringBuilder(); sb.append(number.substring(0, 6)); sb.append("19"); sb.append(number.substring(6, 15)); sb.append(getCheckCode(sb.toString())); return sb.toString(); } private String getCheckCode(String number) { int remaining = 0; if (number.length() == 18) { return number.substring(17, 18); } int sum = 0; int ai = 0; for (int i = 0; i < 17; i ) { String k = number.substring(i, i 1); ai = Integer.parseInt(k); sum = wi[i] * ai; } remaining = sum % 11; return remaining == 2 ? "X" : String.valueOf(vi[remaining]); } private String getIdNumber() { EditText edit = (EditText)findViewById(R.id.edt_id_number); return edit.getText().toString().trim(); } private void showResult(String message) { TextView tv = (TextView)findViewById(R.id.tv_result); tv.setText(message); } private void showErrorMessage(int resId) { Toast.makeText(this, resId, Toast.LENGTH_LONG).show(); } private String getGender(String number) { String gender = number.substring(14, 17); return Integer.parseInt(gender) % 2 == 0 ? getString(R.string.female) : getString(R.string.male); } private int getAge(String number) { String birth = number.substring(6, 10); int start = Integer.parseInt(birth); GregorianCalendar calendar = new GregorianCalendar(); int end = calendar.get(java.util.Calendar.YEAR); return end - start; } private String getBirth(String number) { String birth = number.substring(6, 14); String year = birth.substring(0, 4); String month = birth.substring(4, 6); String day = birth.substring(6, 8); return year getString(R.string.year) month getString(R.string.month) day getString(R.string.day); } private String getAddress(String number) { StringBuilder sb = new StringBuilder(); DBHelper helper = DBHelper.getInstance(this); sb.append(helper.getAddress(this, number.substring(0, 6))); helper.close(); return sb.toString(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the currently selected menu XML resource. getMenuInflater().inflate(R.menu.options, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case R.id.feedback: sendFeedback("dohkoos@gmail.com", getString(R.string.feedback_title)); break; case R.id.share: shareApp(getString(R.string.share_send_title), getString(R.string.share_send_message), getPackageName()); break; case R.id.about: showAbout(); break; default: return super.onOptionsItemSelected(item); } return true; } private void shareApp(CharSequence subject, CharSequence content, String packageName) { Intent intent = new Intent("android.intent.action.SEND"); intent.putExtra("android.intent.extra.SUBJECT", subject); intent.putExtra("android.intent.extra.TEXT", content "http://market.android.com/search?q=pname:" packageName); intent.setType("text/plain"); startActivity(intent); } private void sendFeedback(String email, String subject) { Uri uri = Uri.parse("mailto:" email); Intent intent = new Intent("android.intent.action.SENDTO", uri); intent.putExtra("android.intent.extra.SUBJECT", subject); startActivity(intent); } private void showAbout() { AlertDialog.Builder aboutBuilder = new AlertDialog.Builder(this); aboutBuilder.setTitle(getResources().getText(R.string.about_title)); aboutBuilder.setMessage(getResources().getString(R.string.about_message, getVersionName())); aboutBuilder.show(); } private String getVersionName() { String versionName; try { versionName = getPackageManager().getPackageInfo(getPackageName(), 0).versionName; } catch (NameNotFoundException e) { versionName = ""; } return versionName; } }
好例子网口号:伸出你的我的手 — 分享!
小贴士
感谢您为本站写下的评论,您的评论对其它用户来说具有重要的参考价值,所以请认真填写。
- 类似“顶”、“沙发”之类没有营养的文字,对勤劳贡献的楼主来说是令人沮丧的反馈信息。
- 相信您也不想看到一排文字/表情墙,所以请不要反馈意义不大的重复字符,也请尽量不要纯表情的回复。
- 提问之前请再仔细看一遍楼主的说明,或许是您遗漏了。
- 请勿到处挖坑绊人、招贴广告。既占空间让人厌烦,又没人会搭理,于人于己都无利。
关于好例子网
本站旨在为广大IT学习爱好者提供一个非营利性互相学习交流分享平台。本站所有资源都可以被免费获取学习研究。本站资源来自网友分享,对搜索内容的合法性不具有预见性、识别性、控制性,仅供学习研究,请务必在下载后24小时内给予删除,不得用于其他任何用途,否则后果自负。基于互联网的特殊性,平台无法对用户传输的作品、信息、内容的权属或合法性、安全性、合规性、真实性、科学性、完整权、有效性等进行实质审查;无论平台是否已进行审查,用户均应自行承担因其传输的作品、信息、内容而可能或已经产生的侵权或权属纠纷等法律责任。本站所有资源不代表本站的观点或立场,基于网友分享,根据中国法律《信息网络传播权保护条例》第二十二与二十三条之规定,若资源存在侵权或相关问题请联系本站客服人员,点此联系我们。关于更多版权及免责申明参见 版权及免责申明
网友评论
我要评论