Я создаю небольшой калькулятор для Android. Клавиатура калькулятора создается Java код в OnDraw:Цвет кнопки при нажатии
public void onDraw(Canvas canvas){
buttonH = height/rows;
Paint paint = new Paint();
paint.setTextAlign(Paint.Align.CENTER);
AssetManager assetManager = getResources().getAssets();
Typeface tf = Typeface.create(Typeface.createFromAsset(assetManager,"fonts/font.ttf"),
Typeface.NORMAL);
paint.setTypeface(tf);
paint.setAntiAlias(true);
textSize = (width+height)/43;
paint.setTextSize(textSize);
paint.setColor(Color.rgb(0, 0, 0));
Bitmap[][] buttons = new Bitmap[rows][];
int spacing = (width+height)/400;
LinearGradient gradient = new LinearGradient(buttonW/2,0,buttonW/2,buttonH,
buttonShade,null,Shader.TileMode.REPEAT);
for(int i = 0; i < rows; i++){
int thisColumns = cScreen[i].length;
buttons[i] = new Bitmap[thisColumns];
buttonW = width/thisColumns;
for(int j = 0; j < thisColumns; j++){
buttons[i][j] = Bitmap.createBitmap(buttonW,buttonH,Bitmap.Config.ARGB_8888);
Canvas temp = new Canvas(buttons[i][j]);
paint.setShader(gradient1);
RectF rect = new RectF(spacing,spacing,buttonW-spacing,buttonH-spacing);
temp.drawRoundRect(rect, width/100,height/100,paint);
paint.setShader(null);
temp.drawText(cScreen[i][j],buttonW/2,(buttonH+textSize)/2,paint);
canvas.drawBitmap(buttons[i][j], buttonW*j+shift,buttonH*i, paint);
}
}
}
, но я хотел бы, чтобы окрасить область кнопки при нажатии на кнопку
использовать ресурс, доступный для этой кнопки http://stackoverflow.com/a/2668538/2181456 .onDraw является более дорогостоящим – Akilan
кнопка создана как растровое изображение не в xml – bisssi
Если вы использовали прозрачные растровые изображения для кнопки и сами рисовали фон вам будет намного легче ИМО. и если вы используете обычные кнопки на макете, это будет еще проще. –