2015-01-06 3 views
0

Я пытаюсь понять с помощью поверхности. Я хочу, чтобы изображение перемещалось слева направо с помощью вида surfaceview. В настоящее время изображение рисуется, но я не могу заставить его двигаться. Где я должен называть переменные x1 и y1. Также как я могу вызвать метод invalidate(), я хочу, чтобы изображение перемещалось слева направо многократно. БлагодаряПеремещение изображения слева направо с использованием вида на поверхность android

public class GameBoardTwo extends SurfaceView { 

private Bitmap bitmap1; 

private SurfaceHolder holder; 
int x1, y1; 



public GameBoardTwo(Context context) { 

    super(context); 

    holder = getHolder(); 
    bitmap1 = BitmapFactory.decodeResource(getResources(), R.drawable.blueball); 
    init(); 

    holder.addCallback(new SurfaceHolder.Callback() { 

     @Override 
     public void surfaceDestroyed(SurfaceHolder holder) { 

     } 

     @Override 
     public void surfaceCreated(SurfaceHolder holder) { 

      Canvas c = holder.lockCanvas(null); 

      drawSomething(c); 

      holder.unlockCanvasAndPost(c); 

     } 



     @Override 
     public void surfaceChanged(SurfaceHolder holder, int format, 

            int width, int height) { 

     } 

    }); 



} 

    private void init(){ 

     x1 = 0; 

     y1 = 100; 


} 



protected void drawSomething(Canvas canvas) { 


    canvas.drawColor(Color.WHITE); 



if(x1 < canvas.getWidth()){ 

    x1 += 5; 
} 

else{ 
    x1 = 0; 
} 

    canvas.drawBitmap(bitmap1, x1, y1, null); 


} 

}

ответ

0

Вы должны использовать нить/работоспособный inteface и переопределить Run(). Что-то вроде этого:

@Override 
protected void run(){ 
    while(true){ 
     drawSomething(c);//c is your locked canvas 
     try{ 
      Thread.sleep(50) 
     } catch(Exception e){} 

    } 

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