您的位置:首页 > 移动开发 > Android开发

Android布局组件中实现圆角边框的两种方法

2015-10-20 16:36 627 查看


设置corners_bg.xml

设置边框圆角可以在drawable-mdpi目录里定义一个xml: 

[html] view
plaincopy

<?xml version="1.0" encoding="utf-8"?>    

<shape xmlns:android="http://schemas.android.com/apk/res/android">      

    <solid android:color="#FFFFFF" />      

    <corners android:topLeftRadius="10dp"     

             android:topRightRadius="10dp"      

             android:bottomRightRadius="10dp"     

             android:bottomLeftRadius="10dp"/>      

</shape>   

解释:

solid的表示填充颜色,为了简单,这里用的是白色。 

而corners则是表示圆角,注意的是这里bottomRightRadius是左下角而不是右下角,bottomLeftRadius右下角。 

上面的效果也可以像下面一样设置,如下:

[html] view
plaincopy

<corners android:radius="5dp" />    




引用corners_bg.xml

如果想引用这个xml,只需要@drawable/corners_bg.xml即可: 

[html] view
plaincopy

android:background="@drawable/corners_bg"   

Java代码动态加载
/**
* 代码动态绘制View的圆角边框
* @param radius 15dp
* @param borderLength 1dp
* @param borderColor
* @return
*/
public static ShapeDrawable createRoundCornerShapeDrawable(float radius, float borderLength, int borderColor) {
float[] outerRadii = new float[8];
float[] innerRadii = new float[8];
for (int i = 0; i < 8; i++) {
outerRadii[i] = radius + borderLength;
innerRadii[i] = radius;
}

ShapeDrawable sd = new ShapeDrawable(new RoundRectShape(outerRadii, new RectF(borderLength, borderLength,
borderLength, borderLength), innerRadii));
sd.getPaint().setColor(borderColor);

return sd;
}


引用createRoundCornerShapeDrawable

tagTextView.setBackground(createRoundCornerShapeDrawable(
radius, (float)DisplayUtils.pxToDip(mContext,BORDER_WIDTH_VALUE),
tag_bg_colors[i % (MAX_NUM_OF_SELECTED_TAG_DEFAULT -1)]
));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: