5.17学习内容 android判断软键盘状态、系统键盘监控、生成中间logo的二维码

来源:互联网 发布:mac鼠标能点右键吗 编辑:程序博客网 时间:2024/06/05 22:56

android判断键盘状态两种方法:

1:http://www.it165.net/pro/html/201206/2987.html

protected void onLayout(boolean changed, int l, int t, int r, int b) {super.onLayout(changed, l, t, r, b);if(!mHasInit) {mHasInit = true;mHeight = b;if(onKeyboardStateChangedListener != null) {onKeyboardStateChangedListener.onKeyboardStateChanged(KEYBOARD_STATE_INIT);}} else {mHeight = mHeight < b ? b : mHeight;}if(mHasInit && mHeight > b) {mHasKeyboard = true;if(onKeyboardStateChangedListener != null) {onKeyboardStateChangedListener.onKeyboardStateChanged(KEYBOARD_STATE_SHOW);}}if(mHasInit && mHasKeyboard && mHeight == b) {mHasKeyboard = false;if(onKeyboardStateChangedListener != null) {onKeyboardStateChangedListener.onKeyboardStateChanged(KEYBOARD_STATE_HIDE);}}}


2.http://blog.csdn.net/h7870181/article/details/8332991

http://blog.csdn.net/yellowcath/article/details/8663527

        InputMethodManager imm = (InputMethodManager) getSystemService(Activity.INPUT_METHOD_SERVICE); 
        if(imm.hideSoftInputFromWindow(editText.getWindowToken(), 0))
        {
        imm.showSoftInput(editText,0);
        //软键盘已弹出
        }
        else
        {
        //软键盘未弹出
        }



二,系统键盘事件捕获:

http://blog.csdn.net/yzzst/article/details/45747507

su

getevent –l

操作输出信号按下电源键/dev/input/event0: EV_KEY KEY_POWER DOWN 
/dev/input/event0: EV_SYN SYN_REPORT 000000 
/dev/input/event0: EV_KEY KEY_POWER UP 
/dev/input/event0: EV_SYN SYN_REPORT 000000音量键下/dev/input/event8: EV_KEY KEY_VOLUMEDOWN DOWN
/dev/input/event8: EV_SYN SYN_REPORT 00000000
/dev/input/event8: EV_KEY KEY_VOLUMEDOWN UP
/dev/input/event8: EV_SYN SYN_REPORT 00000000音量键上/dev/input/event8: EV_KEY KEY_VOLUMEUP DOWN
/dev/input/event8: EV_SYN SYN_REPORT 00000000
/dev/input/event8: EV_KEY KEY_VOLUMEUP UP
/dev/input/event8: EV_SYN SYN_REPORT 00000000按下物理按键“1”/dev/input/event0: EV_KEY KEY_1 DOWN
/dev/input/event0: EV_KEY KEY_1 UP
按下物理按键“q”/dev/input/event0: EV_KEY KEY_Q DOWN
/dev/input/event0: EV_KEY KEY_Q UP按下软键盘上的“q”字母/dev/input/event0: EV_ABS ABS_X 0000001b
/dev/input/event0: EV_ABS ABS_Y 000001d5
/dev/input/event0: EV_KEY BTN_TOUCH DOWN
/dev/input/event0: EV_SYN SYN_REPORT 00000000
/dev/input/event0: EV_KEY BTN_TOUCH UP
/dev/input/event0: EV_SYN SYN_REPORT 00000000按下软件键盘上的的“1”按键/dev/input/event0: EV_ABS ABS_X 00000019
/dev/input/event0: EV_ABS ABS_Y 000001d7
/dev/input/event0: EV_KEY BTN_TOUCH DOWN
/dev/input/event0: EV_SYN SYN_REPORT 00000000
/dev/input/event0: EV_KEY BTN_TOUCH UP
/dev/input/event0: EV_SYN SYN_REPORT 00000000


三:生成中间logo的二维码:

http://blog.csdn.net/jerehedu/article/details/45746369

    /**      * 生成二维码      * @param string 二维码中包含的文本信息      * @param mBitmap logo图片      * @param format  编码格式      * @return Bitmap 位图      * @throws WriterException      */      public Bitmap createCode(String string,Bitmap mBitmap, BarcodeFormat format)              throws WriterException {          Matrix m = new Matrix();          float sx = (float) 2 * IMAGE_HALFWIDTH / mBitmap.getWidth();          float sy = (float) 2 * IMAGE_HALFWIDTH                  / mBitmap.getHeight();          m.setScale(sx, sy);//设置缩放信息          //将logo图片按martix设置的信息缩放          mBitmap = Bitmap.createBitmap(mBitmap, 0, 0,                  mBitmap.getWidth(), mBitmap.getHeight(), m, false);          MultiFormatWriter writer = new MultiFormatWriter();          Hashtable<EncodeHintType, String> hst = new Hashtable<EncodeHintType, String>();          hst.put(EncodeHintType.CHARACTER_SET, "UTF-8");//设置字符编码          BitMatrix matrix = writer.encode(string, format, 400, 400, hst);//生成二维码矩阵信息          int width = matrix.getWidth();//矩阵高度          int height = matrix.getHeight();//矩阵宽度          int halfW = width / 2;          int halfH = height / 2;          int[] pixels = new int[width * height];//定义数组长度为矩阵高度*矩阵宽度,用于记录矩阵中像素信息          for (int y = 0; y < height; y++) {//从行开始迭代矩阵              for (int x = 0; x < width; x++) {//迭代列                  if (x > halfW - IMAGE_HALFWIDTH && x < halfW + IMAGE_HALFWIDTH                          && y > halfH - IMAGE_HALFWIDTH                          && y < halfH + IMAGE_HALFWIDTH) {//该位置用于存放图片信息  //记录图片每个像素信息                      pixels[y * width + x] = mBitmap.getPixel(x - halfW                              + IMAGE_HALFWIDTH, y - halfH + IMAGE_HALFWIDTH);                } else {                      if (matrix.get(x, y)) {//如果有黑块点,记录信息                          pixels[y * width + x] = 0xff000000;//记录黑块信息                      }                  }                }          }          Bitmap bitmap = Bitmap.createBitmap(width, height,                  Bitmap.Config.ARGB_8888);          // 通过像素数组生成bitmap          bitmap.setPixels(pixels, 0, width, 0, 0, width, height);          return bitmap;      }  












0 0
原创粉丝点击