在Android APP中经常会有进入某一页面,该页面的EditText默认获取焦点,且弹出键盘,这一功能比较简单,现在我就将其写在这里,以便以后使用 的时候方便,同时若能帮助到大家那鄙人就幸甚乐哉了。。

现在我们可以将键盘的弹出和隐藏写在工具类中以方便在项目中使用。

public class KeyboardHelper {

static KeyboardHelper instance;

private KeyboardHelper() {
    // construct
}

public static KeyboardHelper getInstance() {
    if (instance == null) {
        instance = new KeyboardHelper();
    }
    return instance;
}

/**
 * 隐藏软键盘
 * @param editText
 */
public void hideKeyBoard(EditText editText){
    InputMethodManager imm=
            (InputMethodManager)
                    MyApplication.getApplication()
                            .getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.hideSoftInputFromWindow(editText.getWindowToken(),0);
}

/**
 * 弹起软键盘
 * @param editText
 */
public void openKeyBoard(EditText editText){
    editText.setFocusable(true);
    editText.setFocusableInTouchMode(true);
    editText.requestFocus();
    Timer timer=new Timer();
    timer.schedule(new TimerTask() {
        @Override`这里写代码片`
        public void run() {
            InputMethodManager imm=
                    (InputMethodManager)
                            MyApplication.getApplication()
                                    .getSystemService(Context.INPUT_METHOD_SERVICE);
            imm.showSoftInput(editText,0);
            editText.setSelection(editText.getText().length());
        }
    },200);


}

}

这就是键盘相关的弹出和隐藏,是不是很简单,但往往就是这种简单基础的东西更容易让人忽略。

现在跟大家说一个发生在我身上的事情,就在昨天我一个刚刚开始学习编程(Java)的自家亲戚,问我用代码表示100-1000之间的阿姆斯特朗数,(其实刚开始听到这个名词我也不知道这是什么意思,后来听其一解释我才知道,阿姆斯特朗数就是一个数的每一位的位数次方相加等于这个数,这样的数就称之为阿姆斯特朗数。我也不知道为什么会有这样的叫法,这又让我涨了一下知识。)我刚开始拿到这个需求的时候,认为这东西不是很简单吗,就不假思索的说这东西很简单我来帮你实现,(受人之托忠人之事)。我就开始帮助人家实现这个功能,虽然最后我实现了这个需求,可我自认为着实打了我的老脸。现在我们来分析一下这个需求的实现过程。。。

首先如果我们需要得到这样的数,
第一:需要得到每一位上的数;
第二:每一位上的数字的三次方相加再跟此数字进行比较

想着很是简单,可就是得到三位数的每一位上的数字可让我想了一会儿,实话说还百度了一番(这么简单的东西可真是丢人了)。闲话少说现在我们来实现这个功能。

1.首先我们得到三位数的个位,这个简单

int a;

 假设a是一个三位数则,他的个位数可以这样表示:

 b=a%10;就是用a模10取余这就是个位数的表示。

2.得到三位数的十位上的数字。

惯性思维
 int c;
 c=a%100;

 可这样得到的确实一个两位数,例如a=154; a%100=54,这个好理解,所以这是错误的

 正确的得到十位上的数字是
 c=a%100/10;还拿154举例,
 154%100=54;
 54/10=5;这个也好理解吧,这就得到了十位上的数字。

3.得到三位数的百位上的数字。

int d;
 d=a/100; 例如154/100取整就是1。

现在我们得到每一位上的数字了剩下的就简单了,

代码:

int a = 100; 
 while (a < 1000) { 
 int b = a % 10; 
 int c = a % 100 / 10; 
 int d = a / 100; 
 if ((b * b * b + c * c * c + d * d * d) == a) { 
 Log.e(“TAG”, “符合条件的数字是::” + a); 
 } 
 a++; 
 }


这样我们就得到了100-1000之间的符合条件的数字。

这真是给了我当头一棒啊,如此简单的东西,我居然一时都没有想出来,真是惭愧啊。看来基础不能丢啊,要时常巩固。。。