Android中shape通常用法

前言

線條的設置在APP中用的地方是很多的,比如很多小模塊之間的分割,而這些絕大多數用shape都是可以實現的,但是在實際的使用中也會有小坑,比如如果是虛線呢 ?如果那條虛線要是垂直的呢?所以這裡簡單的實現以下讓我們來趟一趟這渾水。

shape實線

如果要實現肯定會有人說這個簡單用view也可以啊我把它的height設置成1dp在給個背景顏色不就可以了嗎,說的確實很有道理我也這樣做過要是用shape呢?

shape其實就是在drawable下面新建xml文件並且可以實現一些形狀的圖形

,或者是顏色減半的效果,它相比PNG圖片佔用的空間更小也比 自定義View實現的更簡單。


  
  
  
  
 
  
 
 
 

可以看見註解也比較詳細有幾個屬性重點說一下:

  • shape 這個屬性來設置你要設置的邊框形狀:rectangle 矩形(默認)
  • line:線條
  • ring: 環形
  • oval:橢圓

  • corners標籤:
  • gradient標籤
  • padding標籤

shape虛線:

如果是用shape來實現虛線的話也比較簡單:


  
  
  
  
 
 

但是有幾個地方我們得搞清楚像:width其實表示的是虛線的寬度 dashGap 表示的是線段與線段之間的間隔 而dashwidth表示的是線段之間的寬度,當然重中之重就是 android:layerType=”software”一定要在你使用虛線的地方加上。

豎直的虛線

如果誰前兩個用shape很好設置的話這個如果是shape就會有問題了由於寬和高的不確定性導致你 用shape來設置的時候就會對它邊上的佈局有影響這裡就必須得自定義View來實現了:

public class JDottedLine extends View {
 
 private Paint mDotPaint;
 
 public JDottedLine(Context context) {
 super(context);
 initView();
 }
 
 public JDottedLine(Context context, @Nullable AttributeSet attrs) {
 super(context, attrs);
 initView();
 }
 
 public JDottedLine(Context context, @Nullable AttributeSet attrs, int defStyleAttr) {
 super(context, attrs, defStyleAttr);
 initView();
 }
 
 private void initView() {
 mDotPaint = new Paint();
 mDotPaint.setColor(Color.parseColor("#FF6677")); //畫筆顏色
 mDotPaint.setStrokeWidth(2); //畫筆寬度
 // 1、STROKE 描邊
 // 2、FILL_AND_STROKE 填充內部和描邊
 // 3、FILL:填充內部
 mDotPaint.setStyle(Paint.Style.STROKE);
 //1、Cap.BUTT 這條路徑結束,而不是超越它。
 //2、Cap.ROUND 結束是個半圓
 //3、Cap.SQUARE 結束是個方形
 mDotPaint.setStrokeCap(Paint.Cap.ROUND);//
 //設置抗鋸齒
 mDotPaint.setAntiAlias(true);
 //設置是否抖動
 mDotPaint.setDither(true);
 }
 
 @Override
 protected void onDraw(Canvas canvas) {
 super.onDraw(canvas);
 float startY = getHeight();
 float startX = getWidth() / 2;
 DashPathEffect dashPathEffect =
 new DashPathEffect(new float[]{8, 10, 8, 10}, 0);
 mDotPaint.setPathEffect(dashPathEffect);
 Path path = new Path();
 path.moveTo(startX,0);
 path.lineTo(startX,startY);
 canvas.drawPath(path,mDotPaint);
 }
}

到這 基本上我們想要的幾種效果就實現了我們只需要加一下background


  
 
  
 
 
 
  
 
 
 


分享到:


相關文章: