2015-01-19 3 views
0

배경에 표준 Android 캔버스와 검은 색을 사용하고 있습니다. 흰색 직사각형을 무작위로 생성하고 세로 및 가로로 이동 시키려고합니다.
나는 그 질문이 분명하고 행할 수 있기를 바랍니다.Android 캔버스 배경에 애니메이션 사용

답변

0

흰색 페인트를

Paint white=new Paint(); 
white.setColor(Color.WHITE); 

재정의 생성 된 onDraw (캔버스)

public void onDraw(Canvas c){ 
//if you want more, write a for loop here  c.drawRect(0,0,System.currentTimeMillis()%500,System.currentTimeMillis()%500,white); 
// every time you invalidate this view, the rectangles will change their positions 
} 
1

물론이 무작위로 산란 사각형의 무리에 포함하는 클래스의 정보를 확인합니다. 새 스레드를 무작위로 생성하면 백그라운드 스레드로 수행하려고합니다. 사각형이 현재 존재하는 뷰의 해당 부분을 무효화합니다.

보기에 onDraw (Canvas canvas) 함수를 오버로드하고 호출 할 때마다 흰색 직사각형을 모두 그립니다.

캔버스는 onDraw를 (대체 할 전망 어딘가에 넣어
ArrayList<RectF> rectangles; 
Paint rectanglePaint; 

public void addRectangle(RectF addRectangle) { 
    if (rectangles == null) rectangles = new ArrayList<>(); 
    rectangles.add(addRectangle); 
    this.invalidate((int)addRectangle.left-1,(int)addRectangle.top-1, (int)addRectangle.right+1, (int)addRectangle.bottom+1); 
} 

public void translateRectangle(int index, float dx, float dy) { 
    if (rectangles == null) return; 
    RectF rect = rectangles.get(index); 
    this.invalidate((int)rect.left-1,(int)rect.top-1, (int)rect.right+1, (int)rect.bottom+1); 
    rect.set(rect.left+dx, rect.top +dy, rect.right+dx, rect.left+dy); 
    this.invalidate((int)rect.left-1,(int)rect.top-1, (int)rect.right+1, (int)rect.bottom+1); 
} 

@Override 
public void onDraw(Canvas canvas) { 
    if (rectangles == null) return; 
     for (RectF rect : rectangles) { 
      canvas.drawRect(rect, rectanglePaint); 
     } 
} 

)는 rectanglePaint의 페인트를 선언하고 흰색 또는 이것 저것 확인해야합니다. 하지만 이것이 바로 코드입니다. 무작위로 호출하는 백그라운드 스레드 또는 무언가를 저장 addRectangle();