我們還不清楚究竟是否你了解如何創建自定義鍵盤。 如果你不這樣做,在這裡 小型可下載的項目,用於創建自定義數值鍵盤。 向CustomKeyboardView類或你自己有自定義鍵盤類中添加以下方法。 它將覆蓋onDraw( ) 方法並繪製項的背景用代碼定義7 ( 在這種情況下," 0 " ) 紅色,其它所有的關鍵字藍色。@Override

public void onDraw(Canvas canvas) {

super.onDraw(canvas);

List 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);

}

}

}

img.php?siteid=1&aid=1414461&hash=dGJQNzkucG5n

在本例中,我沒有使用9 patch圖片,只是一些簡單50%透明方形圖像,取得了效果,而已有的按鈕僅僅是染色的顏色我要的 以獲得更多的自定義的結果,我可以把我的圖像有效9 patch圖片,請執行以下操作。 請注意,兩個鍵與Icon無法正確呈現,因為它們不定義為9 patch圖片和我並沒有考慮任何特殊的鍛煉方法很好地滿足此示例。 我還沒有涉及用戶的各種狀態的不同images/effects鍵樣,其它的顯示應該怎麼做。@Override

public void onDraw(Canvas canvas) {

// super.onDraw(canvas);

List 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);

}

}

}

img.php?siteid=1&aid=1414461&hash=VFZyUnoucG5n

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐