SurfaceView實現圓角矩形預覽

android中,文本、按鈕實現圓角樣式只需要在其背景中定義corners屬性設置radius即可。
在SurfaceView中同樣可以實現此種效果,以豐富預覽樣式。
比如用SurfaceView要實現圓角矩形預覽的效果,自定義View繼承於SurfaceView,然後重寫其draw方法,這點不同於ImageView實現圓角效果,ImageView要重寫其onDraw方法。具體代碼,如下。
	@Override
	public void draw(Canvas canvas) {
		
	    Path path = new Path();  
            //用矩形表示SurfaceView寬高
	    RectF rect = new RectF(0, 0, this.getWidth(), this.getHeight());
            //15.0f即是圓角半徑
           path.addRoundRect(rect, 15.0f, 15.0f, Path.Direction.CCW);
	    //裁剪畫布,並設置其填充方式  
	    canvas.clipPath(path, Region.Op.REPLACE);  
	    super.draw(canvas); 
	}
同理,要實現其他樣式的效果,只需要調用Canvas類中的其他畫圖方法就好。
不過,要想實現預覽,還需要在佈局中加入背景,一般設置爲透明色就好了。
最後,上圖展示實現效果。
附:ImageView實現圓角代碼
        @Override
	protected void onDraw(Canvas canvas) {
		Path clipPath = new Path();
		int w = this.getWidth();
		int h = this.getHeight();
		
		clipPath.addRoundRect(new RectF(0, 0, w, h), 10.0f, 10.0f, Path.Direction.CW);
		canvas.clipPath(clipPath);
		super.onDraw(canvas);
	}

備註:如上的寫法只能適配部分機型,更全面的適配參考點我圓角dialog的寫法 20180809

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章