2014-02-26 3 views
0

I 내가 view.Inside 캔버스는 onDraw 방법을 확장하여있는 CustomView라는 정의보기를 정의 MainActivity캔버스 프레임 율 드롭

import android.os.Bundle; 
import android.app.Activity; 
import android.view.Menu; 

public class MainActivity extends Activity { 
Customview cust_view; 
CustomThread cust_thread; 
@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    cust_view=new Customview(this); 

    setContentView(cust_view); 

    cust_thread= new CustomThread(); 

    cust_thread.start(); 
} 

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 
    return true; 
} 

    } 

라는 활성을 갖는 난, SX 공동 변경 ... 원을 그리 세로 좌표 .. 무효화. 내 원이 화면의 한 모서리에서 다른 모서리로 튀어 오릅니다.

import android.content.Context; 
import android.graphics.Canvas; 
import android.graphics.Paint; 
import android.view.View; 

public class Customview extends View 
{ 
Paint paint = new Paint(); 
float circle_x; 
int mul=1; 
public Customview(Context context) { 
    super(context); 
} 


public void onDraw(Canvas canvas) 
{ 
    circle_x+=2*mul; 

    if(circle_x==canvas.getWidth()) 
     mul=mul*-1; 
    if(circle_x==0) 
     mul=mul*-1; 

    canvas.drawCircle(circle_x, 100, 400, paint); 
invalidate(); 
} 

} 

은 또한 루프 루프 계속하는 동안 thread.Inside에게 실행()를 확장하여 CustomThread 이름을 만든 사용자 지정 스레드가 비어 있습니다.

이제
public class CustomThread extends Thread{ 


@Override 
public void run() { 

while(true) 
    { 

    } 

       } 
} 

난 내 주요 활동에 스레드를 시작하는 경우는, 원의 운동을하는 동안 프레임 드롭이 ... 그것은 moment..then에 대한 일시 정지 move..slight like..move 이동입니다 다시 움직여 라. 그리고 이것은 반복한다.

내가 스레드를 시작하지 않으면 부드럽게 움직입니다. 이상한 너무

그리고 뭔가 : 나는() 메소드 내 실행에

Thread.sleep(0); 

를 넣을 경우 스레드하지만,이 시간을 시작하는 경우

, 다시 부드러운.

무슨 일입니까?

어떻게 해결할 수 있습니까?

+0

그 스레드는 무엇입니까? – pskink

+0

아직 테스트가 없습니다. – umerbanday

+1

스레드가 차단 작업으로 중단되지 않고 CPU를 먹는다면 모든 것이 느려집니다. – pskink

답변

0

"invalidate();"사용 onDraw()에서 장치에 대한 좋은 생각이 아니므로 postInvalidateDelayed (20)로 대체해야합니다.

+0

나는 그것을 시도했지만 지연이 지속됩니다 – umerbanday