ユーザーに応じてボタンを描画する必要があります。これらのボタンは、角を丸くし、背景をグラデーションにする必要があります。
この結果を達成するために、ボタンを作成するコードは次のとおりです。
ImageButton btn = new ImageButton(this);
btn.setBackgroundDrawable(null);
GradientDrawable gradientNormal = new GradientDrawable(Orientation.BOTTOM_TOP,
new int[] { cc.getColorSelector()[1], cc.getColorSelector()[0] });
GradientDrawable gradientPressed = new GradientDrawable(Orientation.BOTTOM_TOP,
new int[] { cc.getColorSelector()[0], cc.getColorSelector()[1] });
StateListDrawable stateListDrawable = new StateListDrawable();
stateListDrawable.addState(new int[] { android.R.attr.state_pressed }, gradientPressed);
stateListDrawable.addState(new int[] {}, gradientNormal);
RoundRectShape rect = new RoundRectShape(new float[] { 30, 30, 30,
30, 30, 30, 30, 30 }, null, null);
ShapeDrawable bg = new ShapeDrawable(rect);
cc.getColorSelector() は整数色のみを返します。
ここで、ボタンの背景として使用できる単一のドローアブルを作成するために、ShapeDrawable の形状を StateListDrawable の色とマージする必要があります。
どうすればいいですか?