Android, Java, JavaScript, Linux, reading...

推荐一个Chrome浏览器翻墙插件 [置顶]


wait和notify/notifyAll


wait等待某个条件发生,而改变这个条件超出了当前方法的控制能力,常由另一个任务来改变。而notify和notifyAll则表示感兴趣的事件发生了,于是唤醒wait之后动作执行。

阅读全文 »


Android Spinner自定义适配器


想让Android的Spinner+Adapter也能像ListView+Adapter那样自由适配任意(信息)列表数据,直接继承ArrayAdapter或BaseAdapter的方法来重写Adapter是不行的,必须实现Android提供的SpinnerAdapter接口来定制Spinner的Adapter才能达到所需效果。

阅读全文 »


Android 点按钮不让AlertDialog退出方法


在AlertDialog中加入布局后,发现数据验证无论通过与否,点了AlertDialog提供的按钮后总是退出。如何使数据在校验未成功的时候hold住AlertDialog呢?网友提供了一种可行方法:

final Builder dialog = new AlertDialog.Builder(mContext);
...
LayoutInflater inflater = LayoutInflater.from(mContext);
View layout = inflater.inflate(R.layout.tsm_person_info, null);
final EditText nameText = (EditText) layout.findViewById(R.id.editText1);
final EditText cardIdText = (EditText) layout.findViewById(R.id.editText2);
final EditText phoneText = (EditText) layout.findViewById(R.id.editText3);
... 
dialog.setView(layout);
dialog.setNeutralButton("确定", new DialogInterface.OnClickListener() {
  @Override
 public void onClick(DialogInterface dialog, int which) { 
  String name = nameText.getText().toString().trim();
  String idCard = cardIdText.getText().toString().trim();
  String phone = phoneText.getText().toString().trim();
  if (name.equals("") || idCard.equals("") || phone.equals("")) {
  holdDialog(dialog, false); //校验不通过界面保持
  return;
 }
 holdDialog(dialog, true); //allow exit
 }
});
dialog.setNegativeButton("取消", new DialogInterface.OnClickListener() {
 @Override
 public void onClick(DialogInterface dialog, int which) {
  Toast.makeText(mContext, "未进行个人化处理!", Toast.LENGTH_SHORT).show();
  holdDialog(dialog, true);//allow exit
 }
});
/**
 *界面保持开关
* @param dialog
*/
private void holdDialog(DialogInterface dialog, boolean flag) {
 try {
  Field field = dialog.getClass().getSuperclass().getDeclaredField("mShowing");
  field.setAccessible(true);
  field.set(dialog, flag);
 } catch (Exception e) {
  e.printStackTrace();
 }
}

阅读全文 »


Android EditText控件的密码输入框可见性设置:


public void showAsPassword(show) {
    if (show) {
     passEdit.setInputType(0x90);
    } else {
     passEdit.setInputType(0x81);
    }
}

阅读全文 »


Android Dialog风格Activity


在Manifist文件中,对Activity添加一项theme的属性,值为@android:style/Theme.Dialog就能将Activity以对话框形式显示。例如:

阅读全文 »


Android调用系统安装/卸载apk过程


1、安装apk

String dirPath = "/data/data/" + getPackageName() + "/files/test.apk"; //文件需有可读权限
Intent intent = new Intent();
intent.setAction(android.content.Intent.ACTION_VIEW);
intent.setDataAndType(Uri.parse("file://" + filePath), "application/vnd.android.package-archive");
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

阅读全文 »


养气歌


少思虑以养心气,寡色欲以养肾气。
常运动以养骨气,戒嗔怒以养肝气。
薄滋味以养胃气,省语言以养神气。
多读书以养胆气,顺时令以养元气。

阅读全文 »


IT Enginner or Code Typist


曾看过这么一句话:“做一个工程师(Enginner or Programdesigner),而不仅是一个程序工人(Code Typist)”。

阅读全文 »