Android Drawing - PullRequest
       1

Android Drawing

1 голос
/ 05 февраля 2011

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

public class ColorChanges extends Activity {
DrawCircle dc;


@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
                drawCircleToCanvas() 

}

void drawCircleToCanvas() 
 { 
    final Handler handler = new Handler() {            
     public void handleMessage(Message msg) {               
          dc.postInvalidate();              
          }            
     };     
     Thread updateUI = new Thread() 
     {              
         public void run() {             
                dc = new DrawCircle(this);  //this line does not work
                dc.setBackgroundColor(Color.WHITE);     


                setContentView(dc);

             handler.sendEmptyMessage(0);               

             }           
         };           
         updateUI.start(); 
        } 
     }

открытый класс DrawCircle extends View {Paint p1 = new Paint ();Paint p2 = новый Paint ();Paint p3 = new Paint ();

Paint pAll[] = new Paint[3];


public DrawCircle(Context context, AttributeSet attrs) {
    super(context, attrs);
    // TODO Auto-generated constructor stub
}
public DrawCircle(Context context, AttributeSet attrs, int defStyle) {
    super(context, attrs, defStyle);
    // TODO Auto-generated constructor stub
}

public DrawCircle(Context context) {
    super(context);

       p1.setStyle(Paint.Style.STROKE);
       p1.setColor(Color.GREEN);
       p1.setStyle(Paint.Style.FILL);

       p2.setStyle(Paint.Style.STROKE);
       p2.setColor(Color.BLUE);
       p2.setStyle(Paint.Style.FILL);

       p3.setStyle(Paint.Style.STROKE);
       p3.setColor(Color.YELLOW);
       p3.setStyle(Paint.Style.FILL);

       pAll[1] = p1;
       pAll[2] = p2;
       pAll[3] = p3;

    // TODO Auto-generated constructor stub
}

@Override  
public void onDraw(Canvas canvas) 
{     
    for (int i = 0; i < pAll.length;i++)
    {
     canvas.drawCircle(200, 200, 100, pAll[i]);
    }

}

}

1 Ответ

0 голосов
/ 11 августа 2015

Если вы хотите нарисовать один и тот же круг, цвет которого меняется со временем (каждые 2 секунды, как вы упомянули), вы должны использовать Handler

для того, чтобы создать таймер и переключать краску при каждом его вызове. Не забудьте вызвать функцию invalidate в вашем пользовательском представлении, так как эта функция просит систему перерисовать экран.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...