使用shape或canvas画圆角矩形

在使用shape作为背景的时候,代码如下:

  1. <?xml version=“1.0” encoding=“utf-8”?>
  2. <shape xmlns:android=“http://schemas.android.com/apk/res/android” >
  3.     <corners android:topLeftRadius=“30dp” android:bottomLeftRadius=“30dp”
  4.         android:topRightRadius=“0dp” android:bottomRightRadius=“0dp”/>
  5.     <solid android:color=“#ff0000”/>
  6. </shape>

在android3.0以上显示正常如下:
但是在android3.0以下,比如android2.3.3结果如下:

这显然不符合我们的要去,我想了很多办法都没能解决,只有通过图片背景来实现,但我在stackoverflow看到一方案计较好,记录一下:

代码如下:

  1. <?xml version=“1.0” encoding=“utf-8”?>
  2. <layer-list xmlns:android=“http://schemas.android.com/apk/res/android” >
  3.     <item>
  4.       <shape
  5.         android:shape=“rectangle”>
  6.             <solid android:color=“#FF0000” />
  7.             <corners android:radius=“30dp”/>
  8.         </shape>
  9.    </item>
  10.    <item android:left=“30dp”
  11.         >
  12.       <shape
  13.         android:shape=“rectangle”>
  14.             <solid android:color=“#FF0000” />
  15.         </shape>
  16.    </item>
  17. </layer-list>

现在效果都一样了,android2.3.3效果如下:

通过两个层,变相的解决了这个问题,希望对大家有帮助!!!!

drawRoundRect方法:绘制圆角矩形

(2013-04-17 19:21:02)

标签:

it

【功能说明】该方法用于在画布上绘制圆角矩形,通过指定RectF对象以及圆角半径来实现。该方法是绘制圆角矩形的主要方法,同时也可以通过设置画笔的空心效果来绘制空心的圆角矩形。

【基本语法】public void drawRoundRect (RectF rect, float rx, float ry, Paint paint)

参数说明

rect:RectF对象。

rx:x方向上的圆角半径。

ry:y方向上的圆角半径。

paint:绘制时所使用的画笔。

【实例演示】下面通过代码来演示如何在画布上绘制圆角矩形。


  1. protected void onDraw(Canvas canvas) {  
  2.     // TODO Auto-generated method stub  
  3.     super.onDraw(canvas);  
  4.     paint.setAntiAlias(true);                       //设置画笔为无锯齿  
  5.     paint.setColor(Color.BLACK);                    //设置画笔颜色  
  6.     canvas.drawColor(Color.WHITE);                  //白色背景  
  7.     paint.setStrokeWidth((float) 3.0);              //线宽  
  8.     paint.setStyle(Style.STROKE);                   //空心效果  
  9.     Rect r1=new Rect();                         //Rect对象  
  10.     r1.left=50;                                 //左边  
  11.     r1.top=50;                                  //上边  
  12.     r1.right=450;                                   //右边  
  13.     r1.bottom=250;                              //下边  
  14.     canvas.drawRect(r1, paint);                 //绘制矩形  
  15.     RectF r2=new RectF();                           //RectF对象  
  16.     r2.left=50;                                 //左边  
  17.     r2.top=400;                                 //上边  
  18.     r2.right=450;                                   //右边  
  19.     r2.bottom=600;                              //下边  
  20.     canvas.drawRoundRect(r2, 10, 10, paint);        //绘制圆角矩形  
  21. }  

在 这段代码中,首先设置了Paint画笔的颜色,并设置Canvas画布为白色背景。接着设置画笔的线宽以及空心效果,这样将绘制出空心矩形。最后,调用 drawRect方法在画布上绘制了一个矩形,调用drawRoundRect方法在画布上绘制了一个圆角矩形。读者运行这段代码,可以在手机屏幕上看到 如图8.18所示的显示效果。

 
图8.17  绘制矩形
 
图8.18  绘制圆角矩形