2014-04-01 84 views
4

定製顯示我想創建一個屏幕是這樣的:用虛線

image of the requirement

我具有寬度和高度,以劃分成8個相等的部分(如果可能的話,虛線)。怎麼做?

這裏是我當前的代碼:

@SuppressLint("NewApi") 
@Override 
protected void onCreate(Bundle savedInstanceState) {   
    super.onCreate(savedInstanceState); 

    drawView = new DrawView(this); 
    drawView.setBackgroundColor(Color.WHITE); 
    setContentView(drawView); 
    // setContentView(R.layout.activity_main); 

    layout = (LinearLayout) findViewById(R.id.load); 

    display = getWindowManager().getDefaultDisplay(); 
    Point size = new Point(); 
    display.getSize(size); 
    width = size.x; 
    height = size.y; 

    equal_parts_width = width/8; 
    equal_parts_height = width/8; 

    Log.i("", width + " <==> " + height + " == " 
     + equal_parts_width + "==" +equal_parts_height); 
} 

public class DrawView extends View { 
    Paint paint = new Paint(); 

    public DrawView(Context context) { 
     super(context);   
     paint.setColor(Color.GREEN); 
    } 

     @Override 
     public void onDraw(Canvas canvas) { 
      for(int i = 0 ; i < 7 ; i++) { 
       canvas.drawLine(0, equal_parts_height*i, 
        width, equal_parts_height*i, paint); 
       canvas.drawLine(equal_parts_width*i, 0, 
        height, equal_parts_width*i, paint); 
      }   
     } 
    } 
} 
+0

8是固定值? –

+0

@ErsinGülbahar是8或10是固定值。 – NagarjunaReddy

+0

所以你可以使用背景圖片嗎? –

回答

2

使用Paint.setpathEffect(PathEffect effect)DashPathEffect

來自文檔:間隔數組必須包含偶數個條目(> = 2),偶數索引指定「開」間隔,而奇數索引指定「關」間隔。

paint.setPathEffect(new DashPathEffect(new float[]{on, off}, 0)); 

並添加到您的drawView函數構造

public DrawView(Context context) { 
    super(context);   
    paint.setColor(Color.GREEN); 
    paint.setPathEffect(new DashPathEffect(new float[]{on, off}, 0)); 
} 

編輯完整的代碼..

public class DrawView extends View { 
    Paint paint = new Paint(); 

    public DrawView(Context context) { 
     super(context);   
     paint.setColor(Color.GREEN); 
     paint.setStyle(Style.STROKE); 
    } 

    @Override 
    public void onDraw(Canvas canvas) { 
     float width = canvas.getWidth(); 
     float height = canvas.getHeight(); 
     float size = height/(7*2); //just use 14 it's for convenience here 
     paint.setStrokeWidth(WIDTH); 
     paint.setPathEffect(new DashPathEffect(new float[]{size, size}, 0)); 
     for(int i = 0 ; i < 7 ; i++) { 
      canvas.drawLine(0, size*i, 
       width, size*i, paint); 
      canvas.drawLine(size*i, 0, 
       height, size*i, paint); 
     }   
    } 

} 

你應該能夠藉此,簡單地改變它以適應你的需要。 您也可以使用此代碼創建圓角點。

paint.setStrokeJoin(Paint.Join.ROUND); 
paint.setStrokeCap(Paint.Cap.ROUND); 
paint.setDither(true); 
paint.setAntiAlias(true); 
+0

沒有需要開關條件,只是我想繪製線(如果可能的虛線)在10個相等的部分。 – NagarjunaReddy

+0

就意味着線的哪一部分是點和關是你的點之間的差距.. 使它甚至只是使用相同的值爲開和關 – simekadam

+0

我會盡力回到你身邊 – NagarjunaReddy