2016-02-25 4 views
0

Я хотел бы создать пользовательские маркеры в android, используя холст.Пользовательское представление Android с холстом

Следующий мой код.

protected void onDraw(Canvas canvas) { 
      // TODO Auto-generated method stub 
      super.onDraw(canvas); 
      int x = getWidth(); 
      int y = getHeight(); 
      int radius; 
      radius = 100; 
      Paint paint = new Paint(); 
      paint.setStyle(Paint.Style.FILL); 
      paint.setColor(Color.WHITE); 
      canvas.drawPaint(paint); 
      // Use Color.parseColor to define HTML colors 
      paint.setColor(Color.parseColor("#CD5C5C")); 
      canvas.drawCircle(x/2, y/2, radius, paint); 
     } 

Но это не дает представление, которое я пытаюсь получить. Im прикладывает изображение в качестве ссылки. Я хочу получить такую ​​точку зрения.

enter image description here

+0

Эй вы можете быть более точными в своей проблеме? Вы не получаете никакого результата или просто хотите получить еще один? И, пожалуйста, дайте фрагмент того, как вы реализуете свой пользовательский вид ... – David

+0

Я не получаю результат, который хотел бы получить –

ответ

2

Я думаю, что происходит не так в этом случае вы получаете ширину и высоту, чтобы сделать свой круг в центре, пожалуйста, попытайтесь получить ширину и высоту вас Родительское представление, как это:

@Override 
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec){ 
    int parentWidth = MeasureSpec.getSize(widthMeasureSpec); 
    int parentHeight = MeasureSpec.getSize(heightMeasureSpec); 
    this.setMeasuredDimension(parentWidth/2, parentHeight); 
    this.setLayoutParams(new *ParentLayoutType*.LayoutParams(parentWidth/2,parentHeight)); 
    super.onMeasure(widthMeasureSpec, heightMeasureSpec); 
} 

И возьмите эти значения для выравнивания вашего круга, сообщите мне, если это была ваша проблема.

+0

, почему 'setMeasuredDimension' ** и **' setLayoutParams' ** и ** 'super.onMeasure' ? вы уверены, что делаете? – pskink

Смежные вопросы