近期根據(jù)設(shè)計需求需要實(shí)現(xiàn)一個上邊左右有圓角的webview利虫,如圖:
直接上?(?^o^?)?代碼:
public class RoundWebview extends WebView{
? ? float width,height =0;
? ? private int radius =0;
? ? public RoundWebview(Context context) {
? ? ? ? super(context);//此處必需引用父控件的構(gòu)造方法糠馆,以使用父控件的主題赋焕,否則會造成鍵盤的一些問題(具體的忘記了灼擂,大家可以試試)
? ? }
public RoundWebview(Context context, AttributeSet attrs) {
? ? ? ? super(context, attrs);//此處必需引用父控件的構(gòu)造方法逗载,以使用父控件的主題瓷马,否則會造成鍵盤的一些問題(具體的忘記了叭喜,大家可以試試)
? ? }
public RoundWebview(Context context, AttributeSet attrs, int defStyleAttr) {
? ? ? ? super(context, attrs, defStyleAttr);//此處必需引用父控件的構(gòu)造方法囚聚,以使用父控件的主題靖榕,否則會造成鍵盤的一些問題(具體的忘記了,大家可以試試)
? ? }
@Override
? ? protected void onLayout(boolean changed, int left, int top, int right, int bottom) {
? ? ? ? super.onLayout(changed, left, top, right, bottom);
? ? ? ? width = getWidth();
? ? ? ? height = getHeight() + StatusBarUtil.getBottomStatusHeight(getContext()) +? ? ? ? ? ? ? ? ? ? ? ? ? ? StatusBarUtil.getBottomStatusHeight(getContext());
}
public void setRadius(int radius) {
? ? ? ? this.radius = radius;
? ? ? ? invalidate();
? ? }
? ? @Override
? ? protected void onDraw(Canvas canvas) {
? ? ? ? float y =this.getScrollY();//因?yàn)閣ebview是可滾動的顽铸,所以它的高度是變化的茁计,每個height地方都需要加上滾動值。不加的話控件的高度不能變更谓松,此圓角構(gòu)成方法適用于其他的控件星压,如Imageview,此時無需加y.
? ? ? ? int r = StatusBarUtil.dp2px(getContext(),radius);
? ? ? ? if (width > r &&height > r) {
? ? ? ? ? ? Path path = new Path();
? ? ? ? ? ? path.moveTo(r, 0);
? ? ? ? ? ? path.lineTo(width - r, 0);
? ? ? ? ? ? path.quadTo(width, 0, width, r);
? ? ? ? ? ? path.lineTo(width,y+ height - r);//1,r改為0
? ? ? ? ? ? path.quadTo(width, y+ height, width - r, y+ height); //2,r改為0
? ? ? ? ? ? path.lineTo(r, y+ height);//3,r改為0
? ? ? ? ? ? path.quadTo(0, height, 0, y+ height - r); //4,r改為0? 這四處r改為0即可實(shí)現(xiàn)上左上右為圓角鬼譬,否則四角皆為圓角
? ? ? ? ? ? path.lineTo(0, r);
? ? ? ? ? ? path.quadTo(0, 0, r, 0);
? ? ? ? ? ? if(r >0) {
? ? ? ? ? ? ? ? canvas.clipPath(path);//將路徑閉合構(gòu)成控件的區(qū)域
? ? ? ? ? ? }
? ? }
? ? ? super.onDraw(canvas);
? ? }
}
--------END------
我是靜染星辰娜膘,私人微信:azxy986753
歡迎添加微信,互相學(xué)習(xí)拧簸,互相進(jìn)步劲绪!