0

我制作了具有复杂背景的自定义视图,它由两个元素组成:顶部 - 位图可绘制,下方为 9 路径可绘制。

我的代码是:

public class MyCustomFrame extends FrameLayout
{
    Drawable main, top;

    public RequestInfoBottomContainer(Context context, AttributeSet attrs, int defStyle)
    {
        super(context, attrs, defStyle);

         main = res.getDrawable(R.drawable.bg_main);
         top = res.getDrawable(R.drawable.bg_top);
    }


    @Override
    protected void onDraw(Canvas canvas)
    {
        int width = getMeasuredWidth();
        int height = canvas.getHeight();


        top.setBounds(0, 0, width, top.getIntrinsicHeight());
        main.setBounds(0, top.getIntrinsicHeight(), width, height);

        top.draw(canvas);
        main.draw(canvas);

    }
}

例如,如果顶部可绘制高度为 10 像素,宽度为 500 像素,高度为 200 像素,我将边界 0、10、500、200 设置为主要可绘制对象 Android 将其绘制为 0、0、500、200 边界。即主要绘制在顶部。

我做错了什么?

4

1 回答 1

0

我做了一些小工作,但这并不好。

Bitmap bmp = Bitmap.createBitmap(width, height - top.getIntrinsicHeight(), Bitmap.Config.ARGB_8888);
main.setBounds(0, 0, width, bmp.getHeight());
main.draw(new Canvas(bmp));
canvas.drawBitmap(bmp, 0, top.getIntrinsicHeight(), null);
bmp.recycle();
于 2013-08-02T05:53:23.153 回答