여러장의 이미지가 필요하다. 여기선 반복된 2장의 이미지를 활용하여 무한으로 스크롤 되는 배경화면을 만들어 보자.
//배경 순서 int bg_order = 1; // 1번 배경 Y 축 이미지 좌표 private int bgImage1_y_pos =0; // 2번 배경 Y축 이미지 좌표 private int bgImage2_y_pos =0; // 배경의 스크롤 속도 private int bgScroll_speed = 2; // 스크린 화면 크기. private int _width, _height ;
private void scrollBgImage(Canvas canvas){ if(bg_order == 2){ // bg2먼저 그리고 -> bg1 뒤에 따라옴 canvas.drawBitmap(backGroundBitmap2, 0, bgImage2_y_pos , null); // 1번째 이미지가 시작될 Y 축 좌표점을 세팅해주는 것이 중요. canvas.drawBitmap(backGroundBitmap, 0, bgImage1_y_pos - _height, null); }else{ // bg1 먼저그리고 -> bg2 뒤에 따라옴 canvas.drawBitmap(backGroundBitmap, 0, bgImage1_y_pos, null); // 2번째 이미지가 시작될 Y 축 좌표점을 세팅해주는 것이 중요. canvas.drawBitmap(backGroundBitmap2, 0, bgImage2_y_pos - _height, null); } // Y 축 포지션을 일정하게 이동시키면 화면이 스크롤 된다. // 즉, scrollBgImage() 는 쓰레드에 의해서 지속적을 호출 되기에... bgImage1_y_pos += mScreenConfig.getY(bgScroll_speed); bgImage2_y_pos += mScreenConfig.getY(bgScroll_speed);;
// 1번 배경이 화면 끝까지 오면, 2번 배경을 Y 축 좌표를 0 으로 준비. 연속 될 수 있도록. if(bg_order == 1 && bgImage1_y_pos == _height && bgImage2_y_pos - _height == 0) { bg_order = 2; bgImage2_y_pos = 0; bgImage1_y_pos = 0; } // 2번 배경이 화면 끝까지 오면, 2번 배경을 Y 축 좌표를 0 으로 준비. 연속 될 수 있도록. if(bg_order == 2 && bgImage2_y_pos == _height && bgImage1_y_pos - _height == 0) { bg_order = 1; bgImage2_y_pos = 0; bgImage1_y_pos = 0; } }
댓글