一、虛線介紹
虛線可以幫助用戶更加清晰的識別出邊框、分割線、進度條等在屏幕上的顯示,能夠有效提升用戶體驗。在Android中,虛線可以通過使用Paint對象的setPathEffect()方法設置路徑效果來實現,其中有三個內置的路徑效果:DiscretePathEffect、DashPathEffect和PathDashPathEffect。下面我們將分別介紹這三種效果。
二、DiscretePathEffect
DiscretePathEffect為路徑添加一些隨機性,它將路徑分成若干個線段,並將每個線段隨機偏移一段距離,這樣就能夠產生出一種跳躍的、抖動的效果,使線條顯得更加生動、有趣。
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
Path path = new Path();
path.moveTo(100, 100);
path.lineTo(400, 400);
path.lineTo(500, 300);
path.lineTo(800, 500);
PathEffect effect = new DiscretePathEffect(20, 5);
paint.setPathEffect(effect);
canvas.drawPath(path, paint);
上述代碼創建了一個Paint對象,並設置它的樣式為STROKE,線條寬度為5。然後創建了一個Path對象,並將其設置為一個不規則的三角形。接著創建了一個DiscretePathEffect對象,將其分割線段長度設置為20,偏移量為5,並將它設置到Paint對象中。最後在Canvas上面繪製出這條使用DiscretePathEffect的Path路徑。
三、DashPathEffect
DashPathEffect為路徑添加一些虛線,它的參數為一個數組,數組中的值依次為虛線的長度和實線的長度,藉助於該參數,我們可以生成不同長度、不同間距的虛線。
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
Path path = new Path();
path.moveTo(100, 100);
path.lineTo(400, 400);
path.lineTo(500, 300);
path.lineTo(800, 500);
PathEffect effect = new DashPathEffect(new float[]{20, 10, 5, 10}, 0);
paint.setPathEffect(effect);
canvas.drawPath(path, paint);
上述代碼跟DiscretePathEffect的代碼基本一致,不同的是我們創建了一個DashPathEffect對象,並將其參數設置為一組虛線長度和實線長度的數組,即:長度為20的實線,長度為10的虛線,長度為5的實線,長度為10的虛線,這樣就可以實現一組具有規律的虛線了。效果如下圖所示:
四、PathDashPathEffect
PathDashPathEffect可以使用一個Path對象來繪製路徑,通過這個Path對象所繪製出來的圖形來代替原有的路徑,原有路徑則被PathDashPathEffect所設置的間隔替換掉。
Paint paint = new Paint();
paint.setStyle(Paint.Style.STROKE);
paint.setStrokeWidth(5);
Path path = new Path();
path.moveTo(100, 100);
path.lineTo(400, 400);
path.lineTo(500, 300);
path.lineTo(800, 500);
Path pathEffect = new Path();
pathEffect.moveTo(0, 0);
pathEffect.lineTo(20, 20);
pathEffect.lineTo(40, 0);
pathEffect.lineTo(60, 20);
pathEffect.lineTo(80, 0);
pathEffect.close();
PathEffect effect = new PathDashPathEffect(pathEffect, 50, 0, PathDashPathEffect.Style.ROTATE);
paint.setPathEffect(effect);
canvas.drawPath(path, paint);
上述代碼創建了一個Path對象,代表要繪製的路線,然後創建了另一個Path對象pathEffect,表示要使用的路徑間隔。pathEffect對象繪製的是一個箭頭,一共是五個等邊三角形拼接而成,每個三角形的邊長為20。然後我們創建PathDashPathEffect對象,將Path對象和間隔長度及偏移量設置到其中,並將其繪製樣式設置為ROTATE,表示箭頭隨著路徑的走向旋轉,然後將該效果設置到Paint對象中,最後便可以通過canvas.drawPath()方法來繪製這條路徑(下圖):
五、小結
通過上述介紹,我們可以看出,Android中虛線的的使用非常靈活且具有多種效果,可以使用DiscretePathEffect產生生動有趣的效果,使用DashPathEffect繪製出具有規律的虛線,還可以使用PathDashPathEffect繪製出代表著方向的箭頭等等,上述代碼也詳細的展示了如何使用這些效果。當然,虛線的使用範圍不限於這些效果,我們可以根據業務需求在實際項目中進行靈活的應用,達到更好的用戶體驗。
原創文章,作者:XVVWO,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/368955.html