2014-01-10 6 views
0

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

public class DrawCharsActivity extends Activity { 

    Paint[] paint; 
    double lon = 30; 
    double lat = 20; 
    int scrWidth; 
    int scrHeight; 
    int x; 
    int y; 
    //String latitudeString[] = new String[]{"30", "20"}; 
    //String longitudeString[]= new String[]{"30", "20"}; 
    String name[] = new String[]{"joseph", "jj"}; 
    Double longitude[] = new Double[]{30.2, 30.2}; 
    Double latitude[] =new Double[]{30.2, 45.2}; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 

     requestWindowFeature(Window.FEATURE_NO_TITLE); 

     setContentView(new Panel(this)); 


     // x = (int) ((scrWidth/360.0) * (180 + lon)); 
     //y = (int) ((scrHeight/180.0) * (90 - lat)); 

     scrWidth = getWindowManager().getDefaultDisplay().getWidth(); 
     scrHeight = getWindowManager().getDefaultDisplay().getHeight(); 
    } 

    class Panel extends View { 

     public Panel(Context context) { 
      super(context); 
     } 

     @Override 
     public void onDraw(Canvas canvas) { 
      for (int i = 0; i < name.length; i++) { 
       paint = new Paint[i]; 
       paint[i].setColor(Color.BLACK); 
       paint[i].setStrokeWidth(1); 
       paint[i].setTextSize(20); 

       //longitude[i] = Double.parseDouble(latitudeString[i]); 
       //latitude[i] = Double.parseDouble(longitudeString[i]); 
       x = (int) ((scrWidth/360.0) * (180 + longitude[i])); 
       y = (int) ((scrHeight/180.0) * (90 - latitude[i])); 

       canvas.drawColor(Color.WHITE); 
       canvas.drawCircle(x, y, 3, paint[i]); 

       System.out.println(x + "x" + name[i]); 
       System.out.println(y + "y" + name[i]); 

      } 


      // canvas.drawLine(80, 80, 80, 200, paint); 
      // canvas.drawText(""+canvas.getWidth()+", "+canvas.getHeight(), 0, 
      // 200,paint); 
     } 
    } 

} 
+0

ИТАК я решил эту проблему, я поставил класс Panel в качестве панели панели; in my DrawCharsActivity. Тогда вместо того, чтобы писать setContentView (новая панель (это)); Я написал panel = new Panel (this); panel.setBackgroundColor (Color.WHITE); setContentView (панель); Спасибо за ответ El_Mochuq, оцените ваши усилия. Благодаря! –

ответ

0

Я решил проблему, я поставил класс Panel как панели Panel в моем DrawCharsActivity. Тогда вместо написания:

setContentView(new Panel(this)); 

Я писал:

panel = new Panel(this); 
panel.setBackgroundColor(Color.WHITE); 
setContentView(panel); 
0

как об этом:

// Create an array list 
     ArrayList name = new ArrayList(); 
     // add elements to the array list 
     name.add("Joseph"); 
     name.add("jj"); 
for (String s : name) { 
paint = new Paint[i]; 
paint[i].setColor(Color.BLACK); 
paint[i].setStrokeWidth(1); 
paint[i].setTextSize(20); 

     //longitude[i] = Double.parseDouble(latitudeString[i]); 
     //latitude[i] = Double.parseDouble(longitudeString[i]); 
     x = (int) ((scrWidth/360.0) * (180 + longitude[i])); 
     y = (int) ((scrHeight/180.0) * (90 - latitude[i])); 

     canvas.drawColor(Color.WHITE); 
     canvas.drawCircle(x, y, 3, paint[i]); 

    System.out.println(x + "x" + name[i]); 
    System.out.println(y + "y" + name[i]); 

} 
+0

Не уверен, если вы полностью поймете мой вопрос, хе-хе. Строка, которая имеет два значения, работает так, как должна, и петли for цикл два раза. Проблема в том, что круг номер два не проявит себя. –

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