日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 运维知识 > Android >内容正文

Android

Android 中自定义软键盘

發(fā)布時(shí)間:2023/12/14 Android 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Android 中自定义软键盘 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

Android 中自定義軟鍵盤


??


圖一為搜狗輸入法圖二為自定義密碼鍵盤圖三為自定義字母鍵盤


java源文件

package com.keyboarddemo;import android.content.Context; import android.graphics.Paint; import android.graphics.Rect; import android.text.method.PasswordTransformationMethod; import android.util.AttributeSet; import android.view.KeyEvent; import android.view.MotionEvent; import android.view.View; import android.view.inputmethod.InputMethodManager; import android.widget.EditText;public class LPTextField extends EditText {private static final int BORDER_INDENT = 2;private boolean shouldCache_;boolean isPassword = true ;/*** TextField of this LPTextField for inputing.*/// private Form form_;/*** Font of text.*/private Paint font_;/*** Temporary string for inputing.*/private String temp_;// 標(biāo)志該控件是否是密碼輸入控件,廣發(fā)新增要求要求對(duì)密碼輸入控件內(nèi)容作一定校驗(yàn)private boolean isPasswordWidget_;/*** Indicator of setting label and input field in ONE row.*/boolean isLabelIndianFile_;/*** Indicate the inputting is not empty.*/boolean required_;String group;String ref;int inputFieldWidth_;boolean editable_ = true;/*** minimum of the characters*/int minSize_;/*** maxmum of the characters*/int maxSize_ = 18;double maxValue_ = -1;double minValue_ = -1;String alartInfo = "";// 輸入框的輸入限制類型private int inputType_;String TextType = "";/* input not support "." */Paint form_;String attrName_;String attrValue_;boolean attrSave_;String isEncrypt_;String hint_;private int height_;private int width_;MainActivity bv_;public LPTextField(Context context) {super(context);// TODO Auto-generated constructor stub}public LPTextField(Context context, AttributeSet attrs) {super(context, attrs);setTransformationMethod(new PasswordTransformationMethod());bv_ = (MainActivity) context;bv_.inputManager_= (InputMethodManager)bv_.getSystemService(Context.INPUT_METHOD_SERVICE);}String password_ = "password";@Overrideprotected void onFocusChanged(boolean focused, int direction,Rect previouslyFocusedRect) {// TODO Auto-generated method stubsuper.onFocusChanged(focused, direction, previouslyFocusedRect);}public boolean dispatchTouchEvent(MotionEvent event) {// TODO Auto-generated method stubthis.requestFocus();boolean rt = false;if(null != password_ && password_.equalsIgnoreCase("password")){bv_.inputManager_.hideSoftInputFromWindow(this.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);if(bv_.dlg == null || !bv_.dlg.isShowing()){if(this.isEnabled()){bv_.OnCreateInputWindow(this);rt = true;}}}return super.dispatchTouchEvent(event);}public String getContentText() {return super.getText().toString();}public String getLabel() {// TODO Auto-generated method stub// 由于國(guó)航項(xiàng)目取消了輸入框的label。// 改為將label作hint顯示,嵌入到輸入框中,所以作此改動(dòng)String str = "";if (null != this.getHint()) {str = this.getHint().toString();if ((null == str) || (str.equals("")))str = "";}return str;}/**** */public boolean onKeyDown(int keyCode, KeyEvent event) {return super.onKeyDown(keyCode, event);}@Overrideprotected void onTextChanged(CharSequence text, int start,int lengthBefore, int lengthAfter) {super.onTextChanged(text, start, lengthBefore, lengthAfter);}String checkText(String text) {if (minValue_ == -1 && maxValue_ == -1)return text;if (text == null || text.equals(""))return text;Double sour = Double.parseDouble(text);if ((maxValue_ != -1) && sour >= maxValue_) {alartInfo = hint_ + "不能大于" + maxValue_;sour = maxValue_;}if ((minValue_ != -1) && sour <= minValue_) {alartInfo = hint_ + "不能小于" + minValue_;sour = minValue_;}String destext = null;// 判斷輸入的內(nèi)容是否有小數(shù)。if (sour % 1 < 0.001) {destext = (sour + "").substring(0, (sour + "").indexOf("."));}if (sour % 1 > 0.001) {destext = sour.toString();}return destext;}public boolean getPasswordMark() {return isPasswordWidget_;}// 設(shè)置密碼輸入框標(biāo)志,如果控件是密碼輸入框,則該方法一定要執(zhí)行public void setPasswordMark(boolean iswork) {isPasswordWidget_ = iswork;}public void setContentText(String text) {// TODO Auto-generated method stubthis.setText(text);}public void setEditable_(boolean editable_) {this.editable_ = editable_;}public void shrinkWidth() {// TODO Auto-generated method stub}public void cleanText() {// TODO Auto-generated method stub}public void setLPHeidht(int height) {// TODO Auto-generated method stub}public void setLPWidth(int width) {// TODO Auto-generated method stub}public View getLPView() {return this;}public int getLPHeight() {return height_;}public int getLPWidth() {return width_;}public void setInTable(boolean inTable) {// TODO Auto-generated method stub}public boolean isInTable() {// TODO Auto-generated method stubreturn false;} }

/*** 密碼鍵盤,字母、數(shù)字隨機(jī)排列顯示*/ public class LPKeyBoard extends LinearLayout {private PopupWindow popWindow_;Dialog dlg_;boolean isShow_ = false;LPImfView imfView;MainActivity bv_;EditText tempEdit_;buttonOk btnOK_; // 確定按鈕// 判斷當(dāng)前輸入框輸入類型是否是數(shù)字boolean inputTypeNumber_ = false;// cs模板定義的輸入長(zhǎng)度限制int maxSize;private Vibrator vibrator_;private static final long VIBRATE_DURATION = 30L;public LPKeyBoard(Context context, LPTextField text) {super(context);// TODO Auto-generated constructor stubbv_ = (MainActivity) context;btnOK_ = new buttonOk(context, false);tempEdit_ = new EditText(context);tempEdit_.setTextSize(15);tempEdit_.setHeight(text.getHeight() - 10);// tempEdit_.setWidth(LPUtils.screenWidth_);tempEdit_.setFocusable(false);tempEdit_.setBackgroundResource(R.drawable.bg_edittext);vibrator_ = (Vibrator) bv_.getSystemService(Context.VIBRATOR_SERVICE);tempEdit_.setGravity(Gravity.RIGHT | Gravity.CENTER_VERTICAL);if (text.getInputType() == android.text.InputType.TYPE_CLASS_NUMBER) {inputTypeNumber_ = true;}if (inputTypeNumber_) {tempEdit_.setLayoutParams(new LinearLayout.LayoutParams(LPUtils.screenWidth_, LayoutParams.WRAP_CONTENT));this.addView(tempEdit_);} else {tempEdit_.setLayoutParams(new LinearLayout.LayoutParams(LPUtils.screenWidth_ * 4 / 5, LayoutParams.WRAP_CONTENT));LinearLayout ll = new LinearLayout(context);ll.setOrientation(LinearLayout.HORIZONTAL);ll.setLayoutParams(new LayoutParams(LayoutParams.FILL_PARENT,LayoutParams.WRAP_CONTENT));ll.addView(tempEdit_);LayoutParams lp = new LayoutParams(LPUtils.screenWidth_ / 5- LPUtils.getScaledValue(6), text.getHeight() - 10);ll.addView(btnOK_, lp);lp.setMargins(LPUtils.getScaledValue(4), 0, 0, 0);this.addView(ll);}if (null != text.getHint()) {tempEdit_.setHint(text.getHint());}imfView = new LPImfView(context, text);this.addView(imfView);requestFocus();this.setClickable(true);this.setBackgroundResource(R.drawable.keyboard_bg);this.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.FILL_PARENT, LayoutParams.WRAP_CONTENT));this.setOrientation(LinearLayout.VERTICAL);}class LPImfView extends TextView {private int PAINT_SIZE = 22;private int BORDER = LPUtils.getScaledValue(2);private int BORDER_TOP = LPUtils.getScaledValue(4);private int BORDER_CENTER = LPUtils.getScaledValue(5);private int colW_one = LPUtils.getScaledValue(4);private int colW_two = LPUtils.getScaledValue(6);private int BORDER_TWO = LPUtils.getScaledValue(6);private int windownShow_W = LPUtils.getScaledValue(1);private int BORDER_NUMBER_CENTER = LPUtils.getScaledValue(4);private EditText edit_;private static final int FONT_H = 5;int height_, width_, qwertyW_, qwertyH_, numW_, numH_;private Paint paint_, textPaint_;// 標(biāo)記按鍵行數(shù) 、 列數(shù)private int key_row = -1;private int key_column = -1;private long keyDownTime;// 用來(lái)保存字符串的private StringBuffer textBuffer_;private Bitmap keyBoard_bg, keyBoard_one, keyBoard_one_down,keyBoard_jsbank, keyBoard_gray_enter, keyBoard_del_down,keyBoard_white_enter, keyBoard_gray_del, keyBoard_shift_normal,keyBoard_shift_down, keyBoard_jsbank_logo, keyboard_num,keyboard_num_down, keyboard_num_del, keyboard_num_downdel,keyboard_abc_up, keyboard_abc_down;private Bitmap keyOne_, keyTwo_, keyThree_, keyFour_;private int[] resultAbc, resultNum;// 鍵盤字母表private final char[] keyAbc_ = {'q', 'w', 'e', 'r', 't', 'y', 'u', 'i', 'o', 'p', 'a', 's','d', 'f', 'g', 'h', 'j', 'k', 'l', 'z', 'x', 'c', 'v', 'b','n', 'm'};/** isABC_:true-大寫,false-小寫 isNum_:true-數(shù)字,false-字母* keyEnter_:true-按下,false-抬起 isDel_: true - 按下,false-抬起* isDelete_:true-最后一個(gè)字符顯示為*,false-最后一個(gè)字符顯示實(shí)際字符*/boolean isABC_, isNum_, keyEnter_, isDel_, isSpace_, isDelete_;// 標(biāo)記字母、數(shù)字鍵第一行的橫坐標(biāo)位置private int column1 = -1;// 標(biāo)記字母鍵第二行的橫坐標(biāo)位置private int column2 = -1;// 標(biāo)記字母鍵第三行的橫坐標(biāo)位置private int column3 = -1;// 標(biāo)記數(shù)字鍵第二行的橫坐標(biāo)位置private int column4 = -1;// 標(biāo)記數(shù)字鍵第三行的橫坐標(biāo)位置private int column5 = -1;public LPImfView(Context context, LPTextField text) {super(context);// TODO Auto-generated constructor stubedit_ = text;maxSize = text.maxSize_;setFocusable(true);requestFocus();init();}private void init() {// TODO Auto-generated method stub// resultAbc = getRandomNumber(26);resultAbc = new int[26];for (int i = 0; i < 26; i++) {resultAbc[i] = i;}resultNum = getRandomNumber(10);String text = edit_.getText().toString();if (text != null) {textBuffer_ = new StringBuffer(text);tempEdit_.setText(getStringBuffer(textBuffer_, false));// edit_.setText("");}textBuffer_ = new StringBuffer();if (inputTypeNumber_) {// 如果輸入類型為數(shù)字的話,彈出的時(shí)數(shù)字鍵盤isNum_ = true;}PAINT_SIZE = LPUtils.getScaledValue(PAINT_SIZE);paint_ = new Paint();paint_.setAntiAlias(true);paint_.setTextSize(PAINT_SIZE);textPaint_ = new Paint();textPaint_.setAntiAlias(true);// textPaint_.setTypeface(Typeface.DEFAULT_BOLD);textPaint_.setTextSize(PAINT_SIZE);keyBoard_bg = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_bg);keyBoard_jsbank_logo = BitmapFactory.decodeResource(getResources(),R.drawable.logo);keyBoard_jsbank = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_czbank);keyBoard_one = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_one);keyBoard_one_down = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_one_down);keyBoard_shift_normal = BitmapFactory.decodeResource(getResources(), R.drawable.keyboard_shift_normal);keyBoard_shift_down = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_shift_down);keyBoard_gray_del = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_gray_del);keyBoard_del_down = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_gray_del_down);keyBoard_gray_enter = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_gray_enter);keyBoard_white_enter = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_white_enter);keyboard_num = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_num);keyboard_num_down = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_num_down);keyboard_num_del = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_num_del);keyboard_num_downdel = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_num_downdel);keyboard_abc_up = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_abc_up);keyboard_abc_down = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_abc_down);// 根據(jù)屏幕大小縮放圖片int w = LPUtils.screenWidth_ / 3 - BORDER_NUMBER_CENTER;int h = ((keyBoard_bg.getHeight() - BORDER_TOP) / 4) - BORDER_TOP;keyboard_num = Bitmap.createScaledBitmap(keyboard_num, w, h, true);keyboard_num_down = Bitmap.createScaledBitmap(keyboard_num_down, w,h, true);keyboard_num_del = Bitmap.createScaledBitmap(keyboard_num_del, w,h, true);keyboard_num_downdel = Bitmap.createScaledBitmap(keyboard_num_downdel, w, h, true);keyboard_abc_up = Bitmap.createScaledBitmap(keyboard_abc_up, w, h,true);keyboard_abc_down = Bitmap.createScaledBitmap(keyboard_abc_down, w,h, true);// 縮放字母鍵的圖片int abc_W = (LPUtils.screenWidth_ / 10 - colW_one);int abc_H = ((keyBoard_bg.getHeight() - BORDER_TOP) / 4)- BORDER_TOP;keyBoard_one = Bitmap.createScaledBitmap(keyBoard_one, abc_W,abc_H, true);keyBoard_one_down = Bitmap.createScaledBitmap(keyBoard_one_down,abc_W, abc_H, true);keyBoard_shift_normal = Bitmap.createScaledBitmap(keyBoard_shift_normal, abc_W + abc_W / 2, abc_H, true);keyBoard_shift_down = Bitmap.createScaledBitmap(keyBoard_shift_down, abc_W + abc_W / 2, abc_H, true);keyBoard_gray_del = Bitmap.createScaledBitmap(keyBoard_gray_del,abc_W << 1, abc_H, true);keyBoard_del_down = Bitmap.createScaledBitmap(keyBoard_del_down,abc_W << 1, abc_H, true);keyBoard_gray_enter = Bitmap.createScaledBitmap(keyBoard_gray_enter, abc_W << 1, abc_H, true);keyBoard_white_enter = Bitmap.createScaledBitmap(keyBoard_white_enter, abc_W << 1, abc_H, true);keyBoard_jsbank = Bitmap.createScaledBitmap(keyBoard_jsbank,(abc_W + colW_one) * 6, abc_H, true);keyBoard_jsbank_logo = Bitmap.createScaledBitmap(keyBoard_jsbank_logo, (abc_W + colW_one) * 4, abc_H- LPUtils.getScaledValue(8), true);// 彈出鍵盤的高度height_ = keyBoard_bg.getHeight();// 彈出鍵盤的寬度width_ = LPUtils.screenWidth_;// 字母鍵的寬度qwertyW_ = keyBoard_one.getWidth();// 字母鍵的高度qwertyH_ = keyBoard_one.getHeight();// 數(shù)字鍵的寬度numW_ = keyboard_num.getWidth();// 數(shù)字鍵的高度numH_ = keyboard_num.getHeight();BORDER_TWO = BORDER + qwertyW_ / 2;colW_two = qwertyW_ / 3;windownShow_W = Math.abs((qwertyW_ - LPUtils.screenWidth_ / 8) / 2);// colW_one = LPUtils.getScaledValue(colW_one);// colW_two = LPUtils.getScaledValue(colW_two);// BORDER_TWO = LPUtils.getScaledValue(BORDER_TWO);// BORDER = LPUtils.getScaledValue(BORDER);// BORDER_TOP = LPUtils.getScaledValue(BORDER_TOP);// BORDER_CENTER = LPUtils.getScaledValue(BORDER_CENTER);LayoutParams lp = (android.widget.LinearLayout.LayoutParams) this.getLayoutParams();if (lp == null) {setLayoutParams(new LayoutParams(width_, height_));} else {lp.height = height_;lp.width = LPUtils.screenWidth_;setLayoutParams(lp);}}public void onDraw(Canvas g) {/** 畫鍵盤的背景*/// g.drawBitmap(keyBoard_bg, 0, 0, paint_);drawKeyBoard(g);}/** 畫出字母鍵盤的布局鍵*/private void drawKeyBoard(Canvas g) {// TODO Auto-generated method stub/** 使得原先的按下去效果無(wú)效*/// column1 = -1;// column2 = -1;// column3 = -1;// column4 = -1;// column5 = -1;/** 畫字母鍵的第一行*/textPaint_.setColor(Color.BLACK);int startX = 0;int startY = 0;String temp;if (isNum_) {textPaint_.setTextSize(PAINT_SIZE + 2);// 畫數(shù)字鍵 (4行3列)startX = (int) (((numW_ + BORDER_NUMBER_CENTER) - textPaint_.measureText("1")) / 2);startY = (int) (((numH_ + BORDER_NUMBER_CENTER) >> 1) + FONT_H + LPUtils.getScaledValue(3));for (int i = 0; i < 3; i++) {for (int j = 0; j < 3; j++) {if (key_row == i) {if (j == key_column) {keyOne_ = keyboard_num_down;} else {keyOne_ = keyboard_num;}} else {keyOne_ = keyboard_num;}g.drawBitmap(keyOne_, BORDER+ (numW_ + BORDER_NUMBER_CENTER) * j,BORDER_TOP+ ((numH_ + BORDER_NUMBER_CENTER) * i),paint_);g.drawText(String.valueOf(resultNum[j + (i * 3)]),startX + BORDER+ (numW_ + BORDER_NUMBER_CENTER) * j,startY + BORDER_TOP+ ((numH_ + BORDER_NUMBER_CENTER) * i),textPaint_);}}// 畫第4行功能鍵if (key_row == 3 && key_column == 0) {g.drawBitmap(keyboard_abc_down, BORDER, BORDER_TOP+ ((numH_ + BORDER_NUMBER_CENTER) * 3), paint_);} else {g.drawBitmap(inputTypeNumber_ ? keyboard_num_down: keyboard_abc_up, BORDER, BORDER_TOP+ ((numH_ + BORDER_NUMBER_CENTER) * 3), paint_);}// textPaint_.setColor(Color.WHITE);g.drawText(!inputTypeNumber_ ? "ABC" : "確定", BORDER+ (numW_ - textPaint_.measureText("ABC")) / 2,BORDER_TOP + ((numH_ + BORDER_NUMBER_CENTER) * 3)+ startY, textPaint_);if (key_row == 3 && key_column == 1) {g.drawBitmap(keyboard_num_down, BORDER + numW_+ BORDER_NUMBER_CENTER, BORDER_TOP+ ((numH_ + BORDER_NUMBER_CENTER) * 3), paint_);} else {g.drawBitmap(keyboard_num, BORDER + numW_+ BORDER_NUMBER_CENTER, BORDER_TOP+ ((numH_ + BORDER_NUMBER_CENTER) * 3), paint_);}textPaint_.setColor(Color.BLACK);g.drawText(String.valueOf(resultNum[9]), startX + BORDER+ numW_ + BORDER_NUMBER_CENTER, BORDER_TOP+ ((numH_ + BORDER_NUMBER_CENTER) * 3) + startY,textPaint_);if (key_row == 3 && key_column == 2) {g.drawBitmap(inputTypeNumber_ ? keyboard_num_del: keyboard_num_downdel, BORDER+ ((numW_ + BORDER_NUMBER_CENTER) << 1), BORDER_TOP+ ((numH_ + BORDER_NUMBER_CENTER) * 3), paint_);delEditAgainValue();} else {g.drawBitmap(inputTypeNumber_ ? keyboard_num_downdel: keyboard_num_del, BORDER+ ((numW_ + BORDER_NUMBER_CENTER) << 1), BORDER_TOP+ ((numH_ + BORDER_NUMBER_CENTER) * 3), paint_);}} else {textPaint_.setTextSize(PAINT_SIZE);startY = (int) (BORDER_TOP + qwertyH_ / 2 + LPUtils.getScaledValue(5));for (int i = 0; i <= 9; i++) {if (!isABC_) {temp = String.valueOf(keyAbc_[resultAbc[i]]);} else {temp = String.valueOf(keyAbc_[resultAbc[i]]).toUpperCase();}startX = getIntX(BORDER, String.valueOf(temp))+ (colW_one + qwertyW_) * i;if (column1 >= 0) {if (i == column1) {keyOne_ = keyBoard_one_down;} else {keyOne_ = keyBoard_one;}} else {keyOne_ = keyBoard_one;}g.drawBitmap(keyOne_, BORDER + (qwertyW_ + colW_one) * i,BORDER_TOP, paint_);if (!isABC_) {g.drawText(String.valueOf(keyAbc_[resultAbc[i]]),startX, startY, textPaint_);} else {g.drawText(String.valueOf(keyAbc_[resultAbc[i]]).toUpperCase(), startX, startY, textPaint_);}}/** 畫字母鍵的第二行*/int startX1 = 0;String temp1;for (int i = 0; i <= 8; i++) {if (!isABC_) {temp1 = String.valueOf(keyAbc_[resultAbc[10 + i]]);} else {temp1 = String.valueOf(keyAbc_[resultAbc[10 + i]]).toUpperCase();}startX1 = getIntX(BORDER_TWO, temp1)+ (colW_one + qwertyW_) * i;if (column2 >= 0) {if (column2 == i) {keyTwo_ = keyBoard_one_down;} else {keyTwo_ = keyBoard_one;}} else {keyTwo_ = keyBoard_one;}g.drawBitmap(keyTwo_, BORDER_TWO + (qwertyW_ + colW_one)* i, BORDER_CENTER + BORDER_TOP + qwertyH_, paint_);if (!isABC_) {g.drawText(String.valueOf(keyAbc_[resultAbc[10 + i]]),startX1, startY + BORDER_CENTER + qwertyH_,textPaint_);} else {g.drawText(String.valueOf(keyAbc_[resultAbc[10 + i]]).toUpperCase(), startX1, startY + BORDER_CENTER+ qwertyH_, textPaint_);}}/** 畫字母鍵的第三行*/int startX2 = 0;String temp2;for (int i = 0; i <= 6; i++) {if (!isABC_) {temp2 = String.valueOf(keyAbc_[resultAbc[19 + i]]);} else {temp2 = String.valueOf(keyAbc_[resultAbc[19 + i]]).toUpperCase();}startX2 = getIntX(BORDER + qwertyW_ - qwertyW_ / 4, temp2)+ (colW_one + qwertyW_) * i;if (column3 >= 0) {if (i == column3) {keyThree_ = keyBoard_one_down;} else {keyThree_ = keyBoard_one;}} else {keyThree_ = keyBoard_one;}g.drawBitmap(keyThree_, BORDER + qwertyW_ - qwertyW_ / 4+ (qwertyW_ + colW_one) * i, BORDER_TOP + 2* BORDER_CENTER + 2 * qwertyH_, paint_);if (!isABC_) {g.drawText(String.valueOf(keyAbc_[resultAbc[19 + i]]),startX2, startY + 2* (BORDER_CENTER + qwertyH_),textPaint_);} else {g.drawText(String.valueOf(keyAbc_[resultAbc[19 + i]]).toUpperCase(), startX2, startY + 2* (BORDER_CENTER + qwertyH_), textPaint_);}}/** 畫字母鍵盤功能鍵的切換大小寫*/// if (!isABC_) {// g.drawBitmap(keyBoard_shift_normal, BORDER, BORDER_TOP + 2// * BORDER_CENTER + 2 * qwertyH_, paint_);// } else {// g.drawBitmap(keyBoard_shift_down, BORDER, BORDER_TOP + 2// * BORDER_CENTER + 2 * qwertyH_, paint_);// }/** 畫字母鍵盤功能鍵的切換大小寫*/if (!isABC_) {g.drawBitmap(keyBoard_shift_normal, BORDER + qwertyW_- qwertyW_ / 4 + (qwertyW_ + colW_one) * 7,BORDER_TOP + 2 * BORDER_CENTER + 2 * qwertyH_,paint_);} else {g.drawBitmap(keyBoard_shift_down, BORDER + qwertyW_- qwertyW_ / 4 + (qwertyW_ + colW_one) * 7,BORDER_TOP + 2 * BORDER_CENTER + 2 * qwertyH_,paint_);}/** 畫功能鍵的切換數(shù)字鍵*/g.drawBitmap(keyBoard_gray_enter, BORDER, BORDER_TOP+ (BORDER_CENTER + qwertyH_) * 3, paint_);// textPaint_.setColor(Color.WHITE);g.drawText("123",BORDER+ (keyBoard_gray_enter.getWidth() - textPaint_.measureText("123")) / 2,(qwertyH_ + BORDER_CENTER) * 3 + BORDER_TOP+ keyBoard_gray_enter.getHeight() / 2+ LPUtils.getScaledValue(8), textPaint_);/** 畫logo*/g.drawBitmap(keyBoard_jsbank,(width_ - keyBoard_jsbank.getWidth()) >> 1, BORDER_TOP+ 3 * BORDER_CENTER + 3 * qwertyH_, paint_);g.drawBitmap(keyBoard_jsbank_logo,(width_ - keyBoard_jsbank_logo.getWidth()) >> 1,BORDER_TOP + 3 * BORDER_CENTER + 3 * qwertyH_+ LPUtils.getScaledValue(4), paint_);// g.drawText("江蘇銀行", (width_ + keyBoard_jsbank_logo.getWidth()// - textPaint_.measureText("江蘇銀行")) / 2,// (qwertyH_ + BORDER_CENTER) * 3 + BORDER_TOP +// keyBoard_gray_enter.getHeight() / 2 +// LPUtils.getScaledValue(5),// textPaint_);/** 畫功能鍵的刪除鍵*/textPaint_.setTextSize(PAINT_SIZE);if (isDel_) {g.drawBitmap(keyBoard_del_down,width_ - keyBoard_del_down.getWidth() - BORDER,BORDER_TOP + 3 * BORDER_CENTER + 3 * qwertyH_,paint_);delEditAgainValue();} else {g.drawBitmap(keyBoard_gray_del,width_ - keyBoard_gray_del.getWidth() - BORDER,BORDER_TOP + 3 * BORDER_CENTER + 3 * qwertyH_,paint_);}// textPaint_.setColor(Color.WHITE);// g.drawText("確定", width_// - BORDER// - keyBoard_gray_enter.getWidth()// + (keyBoard_gray_enter.getWidth() - textPaint_// .measureText("確定")) / 2, BORDER_TOP + 3// * BORDER_CENTER + 3 * qwertyH_ + LPUtils.getScaledValue(25),// textPaint_);}}@Overridepublic boolean onTouchEvent(MotionEvent event) {// TODO Auto-generated method stub// 按下去的橫坐標(biāo)int x = (int) event.getX();// 按下去的縱坐標(biāo)int y = (int) event.getY();int rowFirst = BORDER_TOP + qwertyH_;int rowSecond = rowFirst + BORDER_CENTER + qwertyH_;int rowThird = rowSecond + BORDER_CENTER + qwertyH_;int rowFourth = rowThird + BORDER_CENTER + qwertyH_;// 觸摸的方式int toucheEvent = event.getAction();switch (toucheEvent) {case MotionEvent.ACTION_DOWN:String isWhat_ = null;String isOut_ = null;keyDownTime = System.currentTimeMillis();if (isNum_) {y = y - BORDER_TOP;if (y >= 0 && y <= (numH_ + BORDER_NUMBER_CENTER) * 4) {key_row = y / (numH_ + BORDER_NUMBER_CENTER);key_column = x / (numW_ + BORDER_NUMBER_CENTER);}} else {if (y > BORDER_TOP && y <= rowFirst) {// 第一行if (x > BORDER && x < width_) {column1 = x / (qwertyW_ + colW_one);if (isABC_) {// 大寫字母isWhat_ = String.valueOf(keyAbc_[resultAbc[column1]]).toUpperCase();} else {// 小寫字母isWhat_ = String.valueOf(keyAbc_[resultAbc[column1]]);}if (column1 == 0) {isOut_ = "left";} else if (column1 == 9) {isOut_ = "right";}// showPopWindow(BORDER + (column1) * (qwertyW_// + colW_one) - (column1 == 0 ? qwertyW_ :// windownShow_W),// BORDER_TOP + qwertyH_ / 2, isWhat_,isOut_);}} else if (y > (rowFirst + BORDER_CENTER)&& y < rowSecond) {// 第二行if (x > BORDER_TWO && x < (width_ - BORDER_TWO)) {column2 = (x - BORDER_TWO)/ (qwertyW_ + colW_one);if (isABC_) {isWhat_ = String.valueOf(keyAbc_[resultAbc[10+ (x - BORDER_TWO)/ (qwertyW_ + colW_one)]]).toUpperCase();} else {isWhat_ = String.valueOf(keyAbc_[resultAbc[10+ (x - BORDER_TWO)/ (qwertyW_ + colW_one)]]);}// showPopWindow(BORDER_TWO + (column2) *// (qwertyW_ + colW_one) - windownShow_W,// BORDER_TOP + BORDER_CENTER + qwertyH_// + qwertyH_ / 2, isWhat_,isOut_);}} else if (y > (rowSecond + BORDER_CENTER)&& y < rowThird) {// 第三行if (x > (BORDER + qwertyW_ - qwertyW_ / 4 + (qwertyW_ + colW_one) * 7)&& x < (BORDER + qwertyW_ - qwertyW_ / 4+ (qwertyW_ + colW_one) * 7 + keyBoard_shift_normal.getWidth())) {isABC_ = !isABC_;} else if (x > (BORDER + qwertyW_ - qwertyW_ / 4)&& x < (BORDER + qwertyW_ - qwertyW_ / 4 + (qwertyW_ + colW_one) * 7)) {column3 = (x - (BORDER + qwertyW_ - qwertyW_ / 4))/ (qwertyW_ + colW_one);if (isABC_) {isWhat_ = String.valueOf(keyAbc_[resultAbc[19 + column3]]).toUpperCase();} else {isWhat_ = String.valueOf(keyAbc_[resultAbc[19 + column3]]);}// showPopWindow(// column3// * (qwertyW_ + colW_one)// + (BORDER// + qwertyW_ - qwertyW_ / 4) - windownShow_W// , BORDER_TOP + qwertyH_ * 2// + BORDER_CENTER * 2 + qwertyH_ / 2,// isWhat_,isOut_);}} else if (y > (rowThird + BORDER_CENTER)&& y < rowFourth) {// 第四行if (x > BORDER&& x < (BORDER + keyBoard_gray_enter.getWidth())) {isNum_ = true;} else if (x > (width_ - BORDER - keyBoard_gray_enter.getWidth()) && x < (width_ - BORDER)) {isDel_ = true;keyEnter_ = true;}}}invalidate();return true;case MotionEvent.ACTION_MOVE:// if(Math.abs(x - 2) > 2 || Math.abs(y - 2) > 2 ){// column1 = -1;// column2 = -1;// column3 = -1;// column4 = -1;// column5 = -1;// }invalidate();return true;case MotionEvent.ACTION_UP:if (isNum_) {if (key_row != -1 && key_column != -1) {isDelete_ = false;if (key_row == 3) {switch (key_column) {case 0:if (inputTypeNumber_) {keyEnter_ = false;dlg_.dismiss();} else {isDelete_ = true;isNum_ = false;}break;case 1:textBuffer_ = appendBuffer(String.valueOf(resultNum[9]),true);break;case 2:isDel_ = false;isDelete_ = true;if (null != textBuffer_&& textBuffer_.length() > 0&& tempEdit_.getText() != null&& tempEdit_.getText().toString().trim().length() > 0) {try {int k = tempEdit_.getSelectionEnd();textBuffer_ = textBuffer_.deleteCharAt(k - 1);} catch (Exception e) {// TODO: handle exception}}break;default:break;}} else {int index = key_row * 3 + key_column;if (index < resultNum.length) {textBuffer_ = appendBuffer(String.valueOf(resultNum[index]),true);}}key_row = -1;key_column = -1;} else {isDelete_ = true;}} else {isDel_ = false;keyEnter_ = false;if (column1 != -1) {// 第一行if (isABC_) {// 大寫字母textBuffer_ = appendBuffer(String.valueOf(keyAbc_[resultAbc[column1]]).toUpperCase(), false);} else {// 小寫字母textBuffer_ = appendBuffer(String.valueOf(keyAbc_[resultAbc[column1]]),false);}} else if (column2 != -1) {// 第二行if (isABC_) {textBuffer_ = appendBuffer(String.valueOf(keyAbc_[resultAbc[10 + column2]]).toUpperCase(), false);} else {textBuffer_ = appendBuffer(String.valueOf(keyAbc_[resultAbc[10 + column2]]),false);}} else if (column3 != -1) {// 第三行if (isABC_) {textBuffer_ = appendBuffer(String.valueOf(keyAbc_[resultAbc[19 + column3]]).toUpperCase(), false);} else {textBuffer_ = appendBuffer(String.valueOf(keyAbc_[resultAbc[19 + column3]]),false);}} else if (y > (rowThird + BORDER_CENTER)&& y < rowFourth) {isDelete_ = true;// 第四行if (x > (width_ - BORDER - keyBoard_gray_del.getWidth()) && x < (width_ - BORDER)) {isDel_ = false;isDelete_ = true;if (null != textBuffer_&& textBuffer_.length() > 0&& tempEdit_.getText() != null&& tempEdit_.getText().toString().trim().length() > 0) {try {int k = tempEdit_.getSelectionEnd();textBuffer_ = textBuffer_.deleteCharAt(k - 1);} catch (Exception e) {// TODO: handle exception}}keyEnter_ = false;}} else if (y > rowFourth) {isDelete_ = true;}}// 每按一次鍵盤刷新一次// resultAbc = getRandomNumber(26);// resultNum = getRandomNumber(10);column1 = -1;column2 = -1;column3 = -1;column4 = -1;column5 = -1;tempEdit_.setText(getStringBuffer(textBuffer_, true).toString());if (null != getStringBuffer(textBuffer_, true)) {tempEdit_.setSelection(getStringBuffer(textBuffer_,true).length());}// 用戶輸入的內(nèi)容顯示一秒后變?yōu)?號(hào)new CountDownTimer(1000, 1000) {public void onFinish() {tempEdit_.setText(getStringBuffer(textBuffer_,false).toString());if (null != getStringBuffer(textBuffer_, false)) {tempEdit_.setSelection(getStringBuffer(textBuffer_, false).length());}}@Overridepublic void onTick(long millisUntilFinished) {// TODO Auto-generated method stub}}.start();edit_.setText(textBuffer_);if (null != textBuffer_) {edit_.setSelection(textBuffer_.length());}dismissPopWindow();invalidate();vibrator_.vibrate(2 * VIBRATE_DURATION);return true;}return false;}private int getIntX(int left, String str) {int startX = 0;startX = (int) (left + (qwertyW_ - textPaint_.measureText(str)) / 2);return startX;}private void showPopWindow(int eventX, int eventY, String isWhat,String isOut) {ShowView show = null;show = new ShowView(bv_, isWhat, isOut);LinearLayout ll = new LinearLayout(bv_);ll.addView(show);if (null != isOut) {if (isOut.equalsIgnoreCase("left")) {eventX = eventX + LPUtils.getScaledValue(10);} else if (isOut.equalsIgnoreCase("right")) {eventX = eventX + colW_one - LPUtils.getScaledValue(3);}}popWindow_ = new PopupWindow(ll,ViewGroup.LayoutParams.WRAP_CONTENT,ViewGroup.LayoutParams.WRAP_CONTENT);if (!popWindow_.isShowing()) {popWindow_.showAtLocation(this, Gravity.AXIS_X_SHIFT,eventX + 1, eventY - LPUtils.getScaledValue(20));}}private void dismissPopWindow() {if (null != popWindow_ && popWindow_.isShowing()) {popWindow_.dismiss();}}// 得到一個(gè)拼接的buffer,用來(lái)顯示點(diǎn)還是實(shí)際內(nèi)容public StringBuffer getStringBuffer(StringBuffer text, boolean isShow) {if (text == null) {return text;}StringBuffer buf = new StringBuffer();if (isShow) {if (null != text && !"".equalsIgnoreCase(text.toString())) {for (int i = 0; i <= text.length() - 2; i++) {buf = buf.append("*");}if (isDelete_) {buf = buf.append("*");} else {buf = buf.append(text.charAt(text.length() - 1));}}} else {if (null != text) {for (int i = 0; i <= text.length() - 1; i++) {buf = buf.append("*");}}}isDelete_ = false;return buf;}// 刪除文本內(nèi)容public void delEditValue(StringBuffer sb) {if (sb.length() == 0&& edit_.getText().toString().trim().length() > 0) {sb.append(edit_.getText().toString().trim());}if (sb.length() > 0) {sb = sb.deleteCharAt(sb.length() - 1);edit_.setText(sb);edit_.setSelection(edit_.getText().toString().trim().length());}}// 連刪操作public void delEditAgainValue() {StringTicker.instance().notifyTicker();this.postInvalidate();if ((System.currentTimeMillis() - keyDownTime) / 100 > 1) {// 按下時(shí)間大于0.1秒 則執(zhí)行連刪輸入框delEditValue(textBuffer_);}}public StringBuffer appendBuffer(String buf, boolean isAppend) {// 判斷是否輸入框有限制輸入長(zhǎng)度if (null != textBuffer_ && textBuffer_.length() >= maxSize) {isDelete_ = true;return textBuffer_;} else {if (inputTypeNumber_) {if (isAppend) {textBuffer_ = textBuffer_.append(buf);} else {isDelete_ = true;}} else {textBuffer_ = textBuffer_.append(buf);}return textBuffer_;}}public int[] getRandomNumber(int limit) {int[] result = new int[limit];for (int i = 0; i < limit; i++) {result[i] = i;}int w;Random rand = new Random();for (int i = limit - 1; i > 0; i--) {w = rand.nextInt(i);int t = result[i];result[i] = result[w];result[w] = t;}return result;}}/*** 確定按鈕** @author brookess*/class buttonOk extends LinearLayout {TextView tv;boolean isSubmit_ = false;public buttonOk(Context context, boolean isSubmit) {super(context);isSubmit_ = isSubmit;tv = new TextView(context);tv.setTextSize(22);tv.setText("確定");// tv.setTypeface(Typeface.DEFAULT_BOLD);tv.setTextColor(Color.WHITE);this.setBackgroundResource(R.drawable.keyboard_num_down);this.addView(tv);this.setLayoutParams(new LinearLayout.LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT));this.setGravity(Gravity.CENTER);}@Overridepublic boolean onTouchEvent(MotionEvent event) {switch (event.getAction()) {case MotionEvent.ACTION_DOWN:// this.setBackgroundResource(R.drawable.keyboard_abc_down);break;case MotionEvent.ACTION_UP:// this.setBackgroundResource(R.drawable.keyboard_abc_up);dlg_.dismiss();break;default:// this.setBackgroundResource(R.drawable.keyboard_abc_up);break;}return true;}}private class ShowView extends TextView {private Bitmap keyBoard_show_window;private Bitmap keyBoard_show_window_left;private Bitmap keyBoard_show_window_right;private int width_;private int height_;private TextPaint paint_;private String isWhat_;private String isOut_;public ShowView(Context context, String isWhat, String isOut) {super(context);// TODO Auto-generated constructor stubisWhat_ = isWhat;isOut_ = isOut;init();}private void init() {// TODO Auto-generated method stubpaint_ = new TextPaint();paint_.setAntiAlias(true);paint_.setTextSize(LPUtils.getScaledValue(18));paint_.setTypeface(Typeface.DEFAULT_BOLD);paint_.setColor(Color.BLACK);keyBoard_show_window = BitmapFactory.decodeResource(getResources(),R.drawable.keyboard_show_window);keyBoard_show_window_left = BitmapFactory.decodeResource(getResources(), R.drawable.keyboard_show_window_left);keyBoard_show_window_right = BitmapFactory.decodeResource(getResources(), R.drawable.keyboard_show_window_right);int w = LPUtils.screenWidth_ / 8;int h = w * keyBoard_show_window.getHeight()/ keyBoard_show_window.getWidth();keyBoard_show_window = Bitmap.createScaledBitmap(keyBoard_show_window, w, h, true);keyBoard_show_window_left = Bitmap.createScaledBitmap(keyBoard_show_window_left, w, h, true);keyBoard_show_window_right = Bitmap.createScaledBitmap(keyBoard_show_window_right, w, h, true);if (null != isOut_) {width_ = keyBoard_show_window_left.getWidth();} else {width_ = keyBoard_show_window.getWidth();}height_ = keyBoard_show_window.getHeight();LayoutParams lp = (android.widget.LinearLayout.LayoutParams) this.getLayoutParams();if (lp == null) {setLayoutParams(new LayoutParams(width_, height_));} else {lp.height = height_;lp.width = width_;setLayoutParams(lp);}}public void onDraw(Canvas g) {if (null != isOut_) {if (isOut_.equalsIgnoreCase("left")) {g.drawBitmap(keyBoard_show_window_left, 0, 0, paint_);} else if (isOut_.equalsIgnoreCase("right")) {g.drawBitmap(keyBoard_show_window_right, 0, 0, paint_);}} else {g.drawBitmap(keyBoard_show_window, 0, 0, paint_);}if (null != isWhat_) {g.drawText(isWhat_, (width_ - paint_.measureText(isWhat_)) / 2,height_ / 2 - LPUtils.getScaledValue(8), paint_);}}} }


源碼下載:http://download.csdn.net/download/gao_chun/8741237




總結(jié)

以上是生活随笔為你收集整理的Android 中自定义软键盘的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

国产精品自在线拍国产 | 成人一级视频在线观看 | 亚洲免费精品视频 | 色婷婷视频在线 | 午夜精品久久久久久久99热影院 | 久久久91精品国产一区二区三区 | 狠狠色丁香九九婷婷综合五月 | 日本激情中文字幕 | www.天天操.com | 伊人www22综合色 | 久久亚洲成人网 | 欧美极品一区二区三区 | av大片免费 | 九九交易行官网 | 国产又粗又猛又黄 | 国产精华国产精品 | 久久久在线免费观看 | 中文字幕色网站 | 免费人成网 | 午夜精品电影 | 日韩三区在线观看 | 99热这里精品 | 久久视频在线 | 人人藻人人澡人人爽 | 国产不卡免费视频 | 日日日日日 | 欧美日韩高清在线一区 | 在线观看视频一区二区三区 | 成人免费看黄 | 综合激情婷婷 | 最近最新中文字幕视频 | 五月婷婷综合在线 | 最新av免费 | 婷婷电影在线观看 | 久久天天躁夜夜躁狠狠85麻豆 | 欧美日本啪啪无遮挡网站 | 久久99久久99精品免费看小说 | 日批网站在线观看 | 国产一区二区三区免费在线观看 | 91av网址| 日本久久久久久科技有限公司 | 久久久久久久久亚洲精品 | 五月香视频在线观看 | 欧美福利视频一区 | 日韩欧美电影 | 亚洲国产免费看 | 欧美精品v国产精品v日韩精品 | 波多野结衣视频一区 | 精品电影一区 | 国产黄色片免费在线观看 | 天天草夜夜 | 日本性久久 | 一区在线观看 | 中文字幕在线久一本久 | 成人精品一区二区三区中文字幕 | av免费看在线 | 免费看的黄色录像 | 中文字幕亚洲情99在线 | 日日夜夜噜 | 免费看的黄色网 | 欧美人牲 | 免费高清在线观看成人 | 五月婷婷操 | 国产不卡精品 | 99精品免费久久久久久久久日本 | 777视频在线观看 | 久久久久国产精品厨房 | 91中文字幕一区 | 亚洲天堂网在线播放 | 中文字幕av在线电影 | 在线日韩一区 | 毛片一区二区 | 精品一区二区综合 | 中文字幕第| 免费能看的黄色片 | 在线观看www视频 | 奇米影视8888 | 欧美国产一区在线 | 蜜臀aⅴ国产精品久久久国产 | 久久人人插| 不卡的av片 | 国产二区视频在线观看 | 亚洲综合色丁香婷婷六月图片 | 精品久久久久久亚洲 | 婷婷av色综合 | 日韩一区二区三区高清在线观看 | 久久久国产一区二区三区四区小说 | 狠狠色丁香久久婷婷综合_中 | 夜夜躁日日躁狠狠久久88av | 免费在线观看日韩视频 | av无限看| 成人精品国产免费网站 | 亚洲国产美女精品久久久久∴ | 美女网站在线免费观看 | 欧美五月婷婷 | 97香蕉久久国产在线观看 | 亚洲乱码国产乱码精品天美传媒 | 91精品视频免费在线观看 | 日韩精品首页 | 男女啪啪免费网站 | 91av社区| 日韩中文字幕在线 | 日韩特级毛片 | 国产亚洲婷婷 | japanese黑人亚洲人4k | 精品国产一区二区三区久久久久久 | 国产成人av在线 | 国产超碰在线 | av在线播放不卡 | av大片免费在线观看 | 中文字幕 国产专区 | 日韩精品视频免费专区在线播放 | 99视频在线精品国自产拍免费观看 | 午夜av一区二区三区 | 三三级黄色片之日韩 | 九九热精品视频在线观看 | 少妇bbw揉bbb欧美 | 99久热在线精品视频成人一区 | 亚洲精品久久在线 | 综合网av| 成年人视频在线免费 | 午夜影视av | 亚洲最大av网站 | 欧美日韩高清一区 | 国产视频2区 | 九九久久婷婷 | 正在播放五月婷婷狠狠干 | 久久视频在线观看中文字幕 | 日韩视频免费播放 | 国产成人久久精品 | 在线看v片成人 | 8x成人在线| 色综合天天爱 | 日韩高清精品免费观看 | 国产免费一区二区三区最新6 | 超碰在线免费福利 | 国产精品免费大片视频 | 精品久久九九 | 操操操com | 久久综合给合久久狠狠色 | .国产精品成人自产拍在线观看6 | 国产夫妻自拍av | 久久99精品久久久久久秒播蜜臀 | 天天操人人干 | 一区二区视 | 国产视频一区二区在线播放 | 久久久国产精品一区二区三区 | 天天玩天天操天天射 | 欧美精品资源 | 欧美一级性生活 | 91.dizhi永久地址最新 | 国产一区免费在线观看 | 久久久av免费 | 国产一级黄色片免费看 | 国产亚洲精品女人久久久久久 | 超碰97免费在线 | 久操视频在线观看 | 精品久久片 | 国产亚洲精品综合一区91 | 处女av在线| 久久久午夜精品理论片中文字幕 | 国产精品嫩草影视久久久 | 一本一本久久a久久精品牛牛影视 | 欧美a级在线 | 91九色在线视频观看 | 国产一区二区久久久 | 午夜av片 | 国产一区久久 | 日本久久电影 | 91在线操 | 亚洲午夜精品一区二区三区电影院 | 国产黄a三级三级三级三级三级 | 日日噜噜噜噜夜夜爽亚洲精品 | ww视频在线观看 | 亚洲电影黄色 | 天天干,天天插 | 97在线观看视频 | 伊人国产在线播放 | 欧美精品中文在线免费观看 | 中文字幕日韩有码 | 国产成人久久av | 99久热在线精品 | 国产亚洲精品日韩在线tv黄 | 久久婷婷国产色一区二区三区 | 亚洲色图27p | 国产精品一区二区久久久久 | 欧美性大战久久久久 | 亚洲精品视频大全 | 中文字幕一二 | 人人爱人人射 | 久久首页| 91av片| 色在线国产 | 成年人在线免费看视频 | 午夜 免费 | 日本一区二区三区免费看 | 91视频高清完整版 | 9色在线视频| 一区二区三区在线观看 | 丁香婷婷综合色啪 | 一区二区三区四区五区在线 | 婷婷丁香色 | 日韩精品大片 | 亚洲成人黄色av | 激情久久综合 | 亚洲成a人片在线观看网站口工 | 五月亚洲综合 | 四虎免费在线观看视频 | 国产97在线观看 | 亚洲aⅴ免费在线观看 | 国产v在线 | 2024av| 92精品国产成人观看免费 | 欧美精品久久久久久久久久久 | 超碰免费公开 | 日本3级在线观看 | 玖玖视频免费在线 | 激情综合网五月 | 99在线精品视频观看 | 最近2019年日本中文免费字幕 | 久久久久久久免费观看 | 国产精品麻 | 亚洲成人av电影在线 | 高清免费在线视频 | 精壮的侍卫呻吟h | 久久激情视频网 | 久久久久99精品成人片三人毛片 | 免费在线一区二区 | 欧美视频在线二区 | 亚洲v精品 | 日韩av二区 | 国产高清免费观看 | 夜夜躁日日躁狠狠躁 | 久久综合成人 | 五月天激情综合 | 97色se| 国产男女无遮挡猛进猛出在线观看 | 天堂资源在线观看视频 | 精品一区精品二区高清 | 一级黄色片在线免费看 | 欧美片网站yy | 国产视频中文字幕在线观看 | 99精品久久久久 | 成人黄在线 | 国产一级免费观看 | 在线韩国电影免费观影完整版 | 久久久久久久网站 | 激情欧美网 | 日日夜夜精品网站 | 91九色国产视频 | 国产少妇在线观看 | 美女国内精品自产拍在线播放 | 亚洲综合在线五月天 | 婷五月天激情 | 久久久久久片 | 婷婷丁香色| 2000xxx影视| 亚洲精品视频在线观看网站 | 人人干网站 | 激情自拍av | 国产一区二区免费看 | 亚洲天堂免费视频 | 亚洲一区二区视频在线播放 | 国产综合激情 | av成人动漫在线观看 | 99久久超碰中文字幕伊人 | 久草在线综合网 | 婷婷六月天天 | 2023天天干| 五月婷丁香网 | 亚洲午夜精品久久久久久久久久久久 | 精品国产伦一区二区三区观看体验 | 国产精品完整版 | 亚洲国产精品成人女人久久 | 在线观看黄色av | 久久一区国产 | 久久婷婷开心 | 国产精品 中文在线 | 国产欧美综合视频 | 91亚洲国产成人久久精品网站 | 91chinese在线 | 国产一区欧美日韩 | 在线观看蜜桃视频 | 久久久精品国产免费观看一区二区 | 丝袜美腿在线视频 | 日韩免费小视频 | 精品96久久久久久中文字幕无 | 精品国产精品久久 | 手机在线观看国产精品 | 日本黄色免费在线 | 精品国产综合区久久久久久 | 91成品视频 | 成人手机在线视频 | 日韩欧美高清视频在线观看 | 中文有码在线 | 精品99视频 | 国产剧情久久 | 波多野结衣在线中文字幕 | 欧美午夜久久久 | 国产成人高清 | 国产精品久久久久久妇 | 欧美在线视频精品 | 99热精品国产一区二区在线观看 | 国产一区网 | 亚洲国产福利视频 | 国产一区二区精品在线 | 久久久影院| 国产99久久久国产精品成人免费 | 国产在线理论片 | 国产在线a | 久久久免费毛片 | 中文字幕在线观看2018 | 在线观看精品一区 | 久久伊人八月婷婷综合激情 | 日韩精品在线看 | 国产精品第72页 | 91大神电影 | 天天射天天爱天天干 | 丁香久久综合 | 日韩久久久 | www.com久久久 | 国产无区一区二区三麻豆 | av网站免费线看精品 | 激情综合中文娱乐网 | 麻豆视频大全 | 9999在线观看 | 蜜桃久久久 | 91久久精品一区二区三区 | 天堂av在线免费观看 | 国产馆在线播放 | 99精品国产高清在线观看 | 天天插天天射 | 亚洲伊人色 | 免费在线成人 | 91成人看片 | 国产999精品久久久久久绿帽 | 日韩一二区在线观看 | 九九九热精品免费视频观看 | 九九热.com| 免费在线激情电影 | 亚洲永久精品一区 | 日韩av影视在线 | 免费的成人av | 久草在线视频首页 | 国产视频一二区 | 国产91精品高清一区二区三区 | 久久亚洲福利视频 | 免费视频资源 | 国产午夜精品一区二区三区 | 99热亚洲精品 | 国产精品 亚洲精品 | 久草新在线 | 日本丶国产丶欧美色综合 | 国产原创在线观看 | 久久精品视频在线 | 国产精品 中文在线 | 一区二区三区精品在线 | 日韩a在线看 | 亚洲传媒在线 | 青青河边草免费直播 | 中文字幕在线看视频 | 正在播放 久久 | 天天射天 | 久久精品视频在线播放 | 97在线观视频免费观看 | 久久国内视频 | 久久免费视频在线观看6 | 国产黄色片免费看 | 天天干天天做天天爱 | 久爱综合 | 四月婷婷在线观看 | av在线免费播放 | 久久中文精品视频 | 国产亚洲精品久久 | 精品1区二区| 韩国一区二区av | 色综合亚洲精品激情狠狠 | 欧美日韩综合在线 | 999久久a精品合区久久久 | 性色在线视频 | 免费毛片aaaaaa | 色婷婷综合久久久久中文字幕1 | 国产资源精品在线观看 | 欧美日韩91 | 91看片在线播放 | 久草在线免费新视频 | 欧美在线视频免费 | 亚洲精品1区2区3区 超碰成人网 | 久草视频精品 | 久久久久久久久久免费 | 亚洲成aⅴ人片久久青草影院 | 97超碰人人澡人人爱学生 | 久久久久久久av | 亚洲人在线7777777精品 | 手机在线欧美 | 国产手机视频精品 | 亚洲无吗av| 黄色特一级 | 五月天久久精品 | 亚洲国产免费网站 | 免费亚洲片 | 午夜视频不卡 | 日韩欧美综合在线视频 | 天天干天天操天天搞 | av日韩av| 亚洲女在线 | 成人羞羞免费 | 天天添夜夜操 | 国产国产人免费人成免费视频 | 97视频免费在线 | 亚洲成av人片在线观看 | 又黄又刺激视频 | 国产一级精品在线观看 | 久久久久久久久久久久电影 | 99视频精品全国免费 | 六月丁香社区 | 国产精品一区二区久久久久 | av电影免费在线看 | 免费av 在线 | 色婷在线 | 天天操网 | 国产又粗又硬又爽视频 | 免费网站看av片 | 国产人成在线观看 | av黄色国产| 69国产在线观看 | 亚洲欧美日韩精品一区二区 | 在线精品观看 | 亚洲涩涩网 | 九九九九精品 | 欧美一区在线看 | 中文字幕精品一区久久久久 | 在线日韩亚洲 | 成年人在线看片 | 日韩在线观看a | 欧美精品乱码久久久久 | 中文字幕av一区二区三区四区 | 久久久久久久久久久久久影院 | 亚洲自拍偷拍色图 | 三级av在线播放 | 永久免费av在线播放 | 午夜精品视频在线 | 日本精品午夜 | 午夜精品一区二区国产 | 久久99久国产精品黄毛片入口 | 亚洲 欧洲av | av电影免费在线播放 | 国产欧美综合在线观看 | 日本黄色黄网站 | 欧美成人aa | 亚洲伦理精品 | 国产成人一区二区三区影院在线 | 国产精品福利在线观看 | 狠狠色丁香婷婷综合久小说久 | 五月天狠狠操 | 美女国产精品 | 中文字幕在线观看完整版 | 丁香婷婷综合五月 | 亚洲资源网| 国产精品丝袜久久久久久久不卡 | 激情久久一区二区三区 | 久久精品91久久久久久再现 | 日本xxxx裸体xxxx17 | www.五月婷| 国内精品久久久精品电影院 | 中文字幕在线观看免费高清完整版 | a√天堂中文在线 | 日本韩国精品一区二区在线观看 | 天天干中文字幕 | 久久久久久久福利 | 婷婷激情五月 | 五月天激情综合网 | 伊香蕉大综综综合久久啪 | 高清在线一区 | 九九热只有这里有精品 | 亚洲精品久久在线 | 日韩深夜在线观看 | 久久久久久久久久久久国产精品 | 免费观看国产精品 | 日韩网站一区二区 | 99这里有精品| 亚洲欧洲一区二区在线观看 | 天天操天天色天天 | 久久精品亚洲精品国产欧美 | 亚洲.www| av电影一区二区三区 | 国产福利91精品一区二区三区 | 亚洲国产精品va在线看黑人动漫 | 久草电影在线观看 | 91精品天码美女少妇 | 一级黄色网址 | 永久精品视频 | 国产美腿白丝袜足在线av | 亚洲综合成人婷婷小说 | 免费网址你懂的 | 最新av免费在线观看 | 日韩 精品 一区 国产 麻豆 | av综合 日韩| 久久精品中文字幕一区二区三区 | 亚洲一区 影院 | 日韩毛片精品 | 国产精品久久久久久久久久久久久 | 久久久久久在线观看 | 99热在线看| 国内成人av | 成年人视频在线免费观看 | 97在线观看免费观看高清 | 免费看黄网站在线 | 在线免费国产视频 | 成人免费看视频 | 久久字幕 | 免费看国产一级片 | 开心激情五月网 | 欧美精品三级在线观看 | jizz999| 国产超碰在线 | 久久精品99视频 | 黄色软件在线观看免费 | 九九热在线免费观看 | 99久久er热在这里只有精品66 | 美女黄频在线观看 | 亚洲国产成人av网 | 日韩在线视频网 | 亚洲视频高清 | 中文字幕乱码一区二区 | 日三级在线 | 亚洲成人av电影 | 国产色综合天天综合网 | a级片久久久 | 欧美 国产 视频 | 久久久久国产一区二区三区四区 | 日本高清免费中文字幕 | 精品久久久久久亚洲 | 韩国精品在线观看 | 四虎在线免费观看 | 久久久亚洲麻豆日韩精品一区三区 | 色婷婷综合久久久久中文字幕1 | 婷婷五月在线视频 | 人人盈棋牌 | 激情网在线视频 | 久久黄色美女 | 久久精品99国产精品 | 四虎影视国产精品免费久久 | 婷婷亚洲五月色综合 | 色婷婷欧美 | 三级a视频 | 久久免费99精品久久久久久 | 婷婷中文字幕 | 亚洲视频精选 | 97国产精品视频 | 激情久久伊人 | 亚洲经典视频 | 久久 在线 | 午夜色性片 | 国产一级久久 | 蜜臀91丨九色丨蝌蚪老版 | 免费在线观看a v | 亚洲精品国久久99热 | 天天艹日日干 | av视屏在线播放 | 日韩网站免费观看 | 99久久夜色精品国产亚洲96 | 狠狠干中文字幕 | 中文字幕在线观看第二页 | 国产免费叼嘿网站免费 | 丁香六月婷婷激情 | 91九色综合 | 五月婷婷综合在线视频 | 久久国产美女视频 | 97久久精品午夜一区二区 | 欧美一区二区在线刺激视频 | 亚洲精品美女视频 | 五月婷婷一区二区三区 | 天天干,天天射,天天操,天天摸 | 久久精品91久久久久久再现 | 粉嫩av一区二区三区四区五区 | 国产精品美女视频网站 | 天天艹天天| 亚洲欧美乱综合图片区小说区 | 国产精品视频永久免费播放 | 国产专区在线 | 91麻豆操 | 国产色爽 | 夜夜躁日日躁狠狠久久88av | 91九色蝌蚪在线 | 亚av在线| 99久久www免费| 91精品欧美一区二区三区 | 国产中文字幕一区 | 亚洲男男gaygayxxxgv | 69性欧美| 人人干人人搞 | 91私密视频 | 免费av在线播放 | 久久狠狠一本精品综合网 | 色婷婷激婷婷情综天天 | 亚洲黄色小说网 | 免费观看成年人视频 | 欧美性粗大hdvideo | 国产麻豆传媒 | 欧美一区二区三区四区夜夜大片 | 日本黄色黄网站 | 中文字幕在线观看视频一区二区三区 | 亚洲视频一区二区三区在线观看 | 激情视频免费观看 | 有码中文字幕在线观看 | 国产精品原创视频 | 亚洲一区精品人人爽人人躁 | 国产成人久久av | www.色午夜,com | 日韩av片免费在线观看 | 99在线视频播放 | 成人免费在线视频观看 | 日韩高清dvd | 成年人网站免费在线观看 | 日韩在线视频网站 | 色噜噜在线观看 | 93久久精品日日躁夜夜躁欧美 | 欧美日韩亚洲在线观看 | 久久夜色精品亚洲噜噜国4 午夜视频在线观看欧美 | 亚洲精品裸体 | 五月婷婷中文 | 伊人导航| 日日夜夜干 | 国产在线不卡 | 天天射狠狠干 | 国产精品美女久久久免费 | 黄色软件视频网站 | 久久99精品一区二区三区三区 | 有码视频在线观看 | 久久久免费精品国产一区二区 | 欧美91精品国产自产 | 韩国视频一区二区三区 | 色干干| 麻豆传媒视频在线 | 99久久综合精品五月天 | 91九色视频观看 | 一性一交视频 | 国产高清视频在线免费观看 | 黄色毛片网站在线观看 | 综合激情av | 日韩在线观看第一页 | 国产婷婷色 | av播放在线 | 国内精品久久久久久久影视简单 | 97网站| 成人免费xyz网站 | 综合婷婷丁香 | 91成人看片 | 久草在线视频免费资源观看 | 欧美成人影音 | 欧洲色吧 | 在线电影 一区 | 久久久久国产一区二区三区 | 国产视频一区二区在线 | 偷拍视频一区 | 免费av福利 | 国产精品亚洲片在线播放 | 狠狠色丁香婷婷综合 | 精品国产乱码久久 | 在线免费观看亚洲视频 | 久久一及片 | 成 人 黄 色 视频 免费观看 | 97超碰免费在线 | 精品国产一二三四区 | 2000xxx影视 | 玖玖爱免费视频 | 黄色免费视频在线观看 | 色婷婷六月天 | 国产九九九九九 | 国产69熟 | 免费看片网页 | 中文字幕观看av | 黄色小网站在线观看 | 成人免费xxxxxx视频 | 激情综合网五月激情 | 精品久久1 | 狠狠色狠狠综合久久 | 啪啪凸凸| 97视频在线观看成人 | 女人高潮一级片 | 香蕉视频在线观看免费 | 国产999精品 | 成人a大片| 日一日干一干 | 性色av免费观看 | 天天操天天操天天操天天操 | 91一区二区三区在线观看 | 99精品视频免费观看 | 久久久久国产一区二区 | 九九热只有这里有精品 | 久久精品之 | 国产精品2020 | 成人少妇影院yyyy | 亚洲电影影音先锋 | 999成人| 久久精品视频3 | 国产在线小视频 | 久久精品视频在线看 | 久久久久久97三级 | 久久99精品国产99久久 | 亚洲精品视频在线免费播放 | 99在线高清视频在线播放 | 亚洲综合情 | 一区二区视频免费在线观看 | 欧美日韩高清一区二区三区 | 伊人天天干 | 日韩天天干 | 国内精品久久天天躁人人爽 | 亚洲国产美女久久久久 | 91最新网址在线观看 | 欧美亚洲成人xxx | 亚洲免费av在线 | 国产精品视频久久 | 国色天香在线 | 国产精品第一页在线观看 | 99久久精品国产系列 | 少妇视频在线播放 | 天天插天天狠 | 日韩av一区二区三区在线观看 | 国内视频在线 | 狠狠躁夜夜躁人人爽超碰97香蕉 | 国产成人三级在线播放 | 99久久这里有精品 | 国产精品区免费视频 | 成人av一二三区 | 久艹视频在线观看 | 国产高清一级 | 四虎永久网站 | www.色综合.com | 国产精品第54页 | 五月天激情综合 | 久久免费精品国产 | 日韩一区二区三免费高清在线观看 | 久久99婷婷| 97超在线视频 | 欧美日韩精品在线 | 91少妇精拍在线播放 | 欧美性做爰猛烈叫床潮 | 干干日日 | 免费观看的av网站 | 国产成人一区二区啪在线观看 | 国产又粗又猛又黄又爽的视频 | 日韩一区二区久久 | 九九色在线观看 | 一区二区三区在线观看 | av在线免费观看不卡 | 91在线看视频免费 | 日本黄色免费大片 | 亚洲精品网址在线观看 | 国产精品自产拍在线观看网站 | 久久国产精品视频观看 | 免费看毛片在线 | 国产91精品久久久久久 | 欧美国产91 | 在线观看视频 | 国产精品久久伊人 | 丁香五婷 | 日日草夜夜操 | 丁香婷五月 | 久久国产精品网站 | 91精品久久久久久综合乱菊 | 在线视频你懂 | www.精选视频.com | 国产在线色 | 国产91亚洲精品 | 大胆欧美gogo免费视频一二区 | 国产视频久久久 | 爱爱av在线| 一区二区三区四区五区在线 | 在线 精品 国产 | 久久免费视频5 | 深夜免费福利视频 | 亚洲国产欧洲综合997久久, | 99久久激情视频 | 在线视频国产区 | 久久久免费毛片 | 4p变态网欧美系列 | 国产一在线精品一区在线观看 | 欧美精品久久久久性色 | 亚洲综合在线播放 | 91成年人视频 | 蜜臀av性久久久久av蜜臀三区 | 九九精品视频在线看 | 日韩最新在线 | 欧美激情综合色综合啪啪五月 | 精品麻豆入口免费 | 黄a网站 | 日本女人在线观看 | 日韩二区精品 | 国产经典 欧美精品 | 伊人婷婷网| 69av在线视频 | 成人久久 | 综合色中文 | 黄色在线视频网址 | 久久精品99国产精品亚洲最刺激 | 久久久不卡影院 | 波多野结衣在线视频一区 | 日韩99热 | 午夜在线观看影院 | 国产精品99久久久久久小说 | 国产精品网址在线观看 | 91麻豆看国产在线紧急地址 | 最近能播放的中文字幕 | 日本精品视频一区 | 久久99热这里只有精品 | 国产精品久久久久久久久久久久久 | 狠狠网站| 国产精品18久久久久久久久久久久 | 久草视频中文在线 | 精品久久久久久久久久久久久久久久久久 | 国产精品亚洲精品 | 精品无人国产偷自产在线 | 久久久久久国产精品 | 成人免费xxxxxx视频 | 国产精品一区免费在线观看 | 日韩av影片在线观看 | 国内精品久久久久国产 | 毛片无卡免费无播放器 | 一区二区三区高清不卡 | 91大神视频网站 | 亚洲精品视频在线观看视频 | 欧美淫aaa免费观看 日韩激情免费视频 | 五月天亚洲婷婷 | 国内精品免费 | 亚洲精品视频在线 | 色综合久久久久综合体桃花网 | 一区二区三区影院 | 日韩三级不卡 | 国产精品亚洲人在线观看 | 精品久久久久久久久久久久久久久久 | 天堂网一区二区 | 日韩av电影中文字幕在线观看 | 中文字幕色在线视频 | 免费黄色激情视频 | 麻豆一区二区 | 欧美性色黄大片在线观看 | 国产精品女人久久久久久 | 日韩精品一区二区三区中文字幕 | 成人av高清 | 久久人人爽人人爽人人片av软件 | 精品一二三四在线 | 婷婷六月丁香激情 | 婷婷丁香国产 | 日本精品视频一区二区 | 国产精品中文字幕av | 久久久91精品国产一区二区精品 | 色综合天天狠天天透天天伊人 | av成人资源 | 久草在线高清 | 国产高清免费视频 | 日韩中文字幕免费视频 | 91精品国产成人观看 | 欧美日韩国产一二三区 | 日韩久久一区 | 国产 一区二区三区 在线 | 成年人在线免费视频观看 | 日韩区在线观看 | 欧洲一区二区在线观看 | 中文字幕av最新 | 国产视频精品在线 | 欧美激情精品久久久久久免费印度 | 在线亚洲成人 | 超碰97中文 | 高清不卡一区二区三区 | 在线观看黄色 | 日韩中文三级 | 日韩免费在线网站 | 国产黄色免费观看 | a级一a一级在线观看 | 色老板在线 | 国产不卡毛片 | 黄网在线免费观看 | 99久久婷婷国产综合精品 | av官网 | av网站播放| 欧美日韩网址 | 91久久奴性调教 | 久久天堂网站 | 96av麻豆蜜桃一区二区 | 国产特级毛片aaaaaa高清 | 久久国产精品二国产精品中国洋人 | 免费福利在线播放 | 在线香蕉视频 | 国产成人99久久亚洲综合精品 | 五月婷丁香网 | 91日韩精品一区 | av看片在线| 四虎成人精品 | 国产精品免费麻豆入口 | 亚洲综合精品视频 | 国产精品日韩在线观看 | 久久久久久久久久久久久影院 | 免费成视频 | 超碰在线91 | 久草影视在线 | 国产明星视频三级a三级点| 狠狠色丁香久久综合网 | 亚洲精品视频网站在线观看 | 综合网伊人 | 91毛片在线观看 | 伊人激情综合 | 午夜精品婷婷 | 四虎永久免费网站 | 九九九在线观看视频 | 免费看搞黄视频网站 | 午夜视频在线观看一区二区三区 | 国产在线观看不卡 | 99久久精品免费看国产四区 | 色婷av| www国产精品com | 天天人人 | 久久久亚洲影院 | 三级在线视频观看 | 日韩在线欧美在线 | 亚洲精品在线观看的 | 99久久精品国产亚洲 | 亚洲天堂网视频在线观看 | 一区二区激情视频 | 日日夜夜综合网 | 六月婷婷久香在线视频 | 中文字幕美女免费在线 | 午夜av剧场| 国产69久久久欧美一级 | 国产精品不卡一区 | 99久久久国产精品免费99 | 久久久久久久免费看 | 91成人在线观看高潮 | 在线观看免费一级片 | 在线观看网站av | 有没有在线观看av | 日韩欧美一区二区三区在线观看 | 久久国产精品免费视频 | 中文在线免费视频 | 久久精选视频 | 亚洲精品免费在线播放 | 亚洲精品乱码久久久一二三 | 国产又粗又猛又色 | 欧美最新大片在线看 | 日本韩国精品一区二区在线观看 | 国产精品破处视频 | 999在线视频 | 69国产成人综合久久精品欧美 | 国产一级在线观看视频 | 国产麻豆成人传媒免费观看 | 亚洲精品福利在线观看 | 成人av网站在线播放 | 国产在线观看av | 免费的国产精品 | 亚洲精品国精品久久99热 | 国产精品美女免费 | 日本视频久久久 | 九九三级毛片 | 69久久99精品久久久久婷婷 | 91激情视频在线 | 中文字幕91视频 | 久久久www成人免费毛片麻豆 | 久久香蕉国产 | 日韩无在线 | 精品亚洲成人 | 免费观看成人 | 欧美国产高清 | 国产精品久久久久久久久久久免费看 | 玖草在线观看 | 99精品观看 | 亚洲精品视频中文字幕 | 在线观看日韩中文字幕 | 日女人电影 | 91精品国产自产在线观看永久 | 久久99亚洲网美利坚合众国 | 日韩欧美在线免费观看 | 欧美日韩1区 | 成人av免费在线播放 | 少妇18xxxx性xxxx片 | 最新一区二区三区 | 国产一级精品视频 | 国产精品久久久久久久久久久久午 | 狠狠干网址 | 伊人首页 | 亚洲无毛专区 | 亚洲精品午夜久久久 | av电影免费在线看 | 久久久免费精品国产一区二区 | av日韩精品 | 五月天网站在线 | 超碰在线日韩 | 欧美少妇xx| 丁五月婷婷 | 五月天婷婷视频 | 91成人黄色 | 日韩在线高清免费视频 | 国产 日韩 中文字幕 | 欧美三级免费 | 一区二区中文字幕在线播放 | 国产91小视频| 99热九九这里只有精品10 | 亚洲天堂网视频 |