How to create android shape background programmatically?

前端 未结 5 1692
无人共我
无人共我 2020-12-13 03:35

How to create this shape programmatically?




        
5条回答
  •  囚心锁ツ
    2020-12-13 04:21

    If what you want is just a simple rounded rectangle, cut the long story short.

        float r=8;
        ShapeDrawable shape = new ShapeDrawable (new RoundRectShape(new float[] { r, r, r, r, r, r, r, r },null,null));
        shape.getPaint().setColor(Color.RED);
        view.setBackground(shape);
    



    • What is the RoundRectShape ?

    RoundRectShape specifies an outer (round) rect and an optional inner (round) rect.

    // RoundRectShape constructor
    
       RoundRectShape(float[] outerRadii,
                         RectF inset,
                       float[] innerRadii);
    
    • outerRadii is an array of 8 radius values, for the outer roundrect. The first two floats are for the top-left corner (remaining pairs correspond clockwise). For no rounded corners on the outer rectangle, just pass null.

    For example:

    • inset is a RectF that specifies the distance from the inner rect to each side of the outer rect. For no inner, pass null.

    • innerRadii is an array of 8 radius values, for the inner roundrect. The first two floats are for the top-left corner (remaining pairs correspond clockwise). For no rounded corners on the inner rectangle, pass null. If inset parameter is null, this parameter is ignored.

    For example:

    ShapeDrawable shape = new ShapeDrawable(
            new RoundRectShape(
                new float[]{20, 20, 20, 20, 20, 20, 20, 20},
                new RectF(10, 20, 10, 20),
                new float[]{40, 40, 40, 40, 40, 40, 40, 40}));
    

提交回复
热议问题