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

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;  
    }  












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值