android自定義鍵盤與更改單個Keys的背景色
阿新 • • 發佈:2019-01-22
@Override
public void onDraw(Canvas canvas) { super.onDraw(canvas); List<Key> keys = getKeyboard().getKeys(); for (Key key : keys) { if (key.codes[0] == 7) { Log.e("KEY", "Drawing key with code " + key.codes[0]); Drawable dr = (Drawable) context.getResources().getDrawable(R.drawable.red_tint); dr.setBounds(key.x, key.y, key.x + key.width, key.y + key.height); dr.draw(canvas); } else { Drawable dr = (Drawable) context.getResources().getDrawable(R.drawable.blue_tint); dr.setBounds(key.x, key.y, key.x + key.width, key.y + key.height); dr.draw(canvas); } } }
設定鍵盤Keys為圖片。。
下面是純手工畫鍵盤。
@Override public void onDraw(Canvas canvas) { // super.onDraw(canvas); List<Key> keys = getKeyboard().getKeys(); for (Key key : keys) { if (key.codes[0] == 7) { NinePatchDrawable npd = (NinePatchDrawable) context.getResources().getDrawable(R.drawable.red_key); npd.setBounds(key.x, key.y, key.x + key.width, key.y + key.height); npd.draw(canvas); } else { NinePatchDrawable npd = (NinePatchDrawable) context.getResources().getDrawable(R.drawable.blue_key); npd.setBounds(key.x, key.y, key.x + key.width, key.y + key.height); npd.draw(canvas); } Paint paint = new Paint(); paint.setTextAlign(Paint.Align.CENTER); paint.setTextSize(48); paint.setColor(Color.GRAY); if (key.label != null) { canvas.drawText(key.label.toString(), key.x + (key.width / 2), key.y + (key.height / 2), paint); } else { key.icon.setBounds(key.x, key.y, key.x + key.width, key.y + key.height); key.icon.draw(canvas); } } }