私のレイアウトファイルのスニペットがあります:
layout_1
背景あり#e9e9e9
<LinearLayout android:id="@+id/layout_1"
android:layout_width="wrap_content"
android:background="#e9e9e9"
android:layout_height="wrap_content"
>
...
<com.test.android.CustomView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
...
</LinerLayout>
<LinearLayout android:id="@+id/layout_2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
>
...
<com.test.android.CustomView
android:layout_width="wrap_content"
android:layout_height="wrap_content"/>
...
</LinerLayout>
私のカスタム ドローアブルと CustomView クラスのスニペットがあります。上のものは下のものを部分的に覆っています。
public class NodeDrawable extends Drawable {
//...
protected ShapeDrawable shapeDrawableBottom;
protected ShapeDrawable shapeDrawableTop;
@Override
public void draw(Canvas canvas) {
Paint circlePaint = shapeDrawableBottom.getPaint();
circlePaint.setColor(DEFAULT_COLOR_BOTTOM);//DEFAULT_COLOR_BOTTOM = 0xe2f5ff
circlePaint.setFlags(Paint.ANTI_ALIAS_FLAG);
shapeDrawableBottom.setBounds();
shapeDrawableBottom.draw(canvas);
Paint circlePaint = shapeDrawableTop.getPaint();
circlePaint.setColor(DEFAULT_COLOR_TOP);//DEFAULT_COLOR_TOP = 0x1f8fd2
circlePaint.setFlags(Paint.ANTI_ALIAS_FLAG);
shapeDrawableBottom.setBounds();
shapeDrawableTop.draw(canvas);
}
//...
}
public class CustomView extends View {
@Override
protected void onSizeChanged(int w, int h, int oldw, int oldh) {
buildDrawables();
}
private void buildDrawables() {
mCustomDrawable = new CustomDrawable();
}
}
ただし、レイアウトの背景は下の背景に影響し、下の背景は上の背景にも影響します。
RGBA のアルファ値をどうすれば正しい RGB カラーで表示されるようにするにはどうすればよいですか? 色をアルファ値 1 の 0xe2f5ff に設定しようとしましたが、レイアウトの背景がまだ下の色に影響していると思います...