将圆角添加到自定义视图

Luc*_*ùlè 4 android drawing rounded-corners drawable

我对 Android 很陌生,我正在尝试在自定义视图(使用画布)上进行绘制。我在那里有一些线条和矩形。关键是,我现在想给整个视图圆角,但这效果不佳,因为我在视图上绘图,而我的绘图位于圆角上方,圆角是通过资源添加的。是否可以添加覆盖整个视图的圆角?

最好的问候和感谢的任何帮助!

Rag*_*dan 5

我不确定你的要求。但是你可以使用下面的并修改相同的

活动_main.xml

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:id="@+id/rl"
android:background="@drawable/bkg" //set background
android:paddingBottom="@dimen/activity_vertical_margin"
android:paddingLeft="@dimen/activity_horizontal_margin"
android:paddingRight="@dimen/activity_horizontal_margin"
android:paddingTop="@dimen/activity_vertical_margin"
tools:context=".MainActivity" >
</RelativeLayout>
Run Code Online (Sandbox Code Playgroud)

后台文件

 <?xml version="1.0" encoding="UTF-8"?> 
 <shape xmlns:android="http://schemas.android.com/apk/res/android"
 android:shape="rectangle"> 
 <solid android:color="#10EB0A"/>    //set color
 <stroke android:width="3dp"         // set border  
 android:color="#0FECFF" />          //set border color 
 <padding android:left="5dp"         //set padding
 android:top="5dp" 
 android:right="5dp"
 android:bottom="5dp"/> 
 <corners android:bottomRightRadius="20dp" //set radius
 android:bottomLeftRadius="20dp" 
 android:topLeftRadius="20dp"
 android:topRightRadius="20dp"/> 
 </shape> 
Run Code Online (Sandbox Code Playgroud)

主活动.java

    public class MainActivity extends Activity {

RelativeLayout rl;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    rl = (RelativeLayout) findViewById(R.id.rl);
    CustomView cv = new CustomView(this);
    rl.addView(cv);  //add custom view to the relative layout
} 

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}
class CustomView extends View
{
    Bitmap bmp;
    PaintDrawable mDrawable;

    public CustomView(Context context) {
        super(context); 
        bmp = BitmapFactory.decodeResource(context.getResources(),R.drawable.ic_launcher);
    }

    @Override
    protected void onDraw(Canvas canvas) {
        // TODO Auto-generated method stub
        super.onDraw(canvas);

        canvas.drawBitmap(bmp, 200, 200, null);
    }   
       }
  }
Run Code Online (Sandbox Code Playgroud)

快照

在此处输入图片说明