2016-07-03 5 views
1

문자로 문자를 문자로 씁니다. 전체 텍스트가 표시된 후에 만 ​​진행률 막대를 실행하기를 원합니다. 나는 통보/기다림으로 그것을 이룰 수 있다고 생각하지만 어떻게해야할지 모르겠다. 어떤 도움이 필요합니까?안드로이드 - 실행 가능한 실행 대기

나는 Textview 확장 Typewriter 클래스 생성 :

private Handler mHandler = new Handler(); 

public Runnable characterAdder = new Runnable() { 
    @Override 
    public void run() { 
    setText(mText.subSequence(0, mIndex++)); 
    if (mIndex <= mText.length()) { 
     mHandler.postDelayed(characterAdder, mDelay); 
    } 
    } 
}; 

public void animateText(CharSequence text) { 
    mText = text; 
    mIndex = 0; 
    setText(""); 
    mHandler.removeCallbacks(characterAdder); 
    mHandler.postDelayed(characterAdder, mDelay); 
} 

을하고 나는 주요 활동에서 사용 : 모두 내 행동이 UI 스레드에서 실행하기 때문에

Typewriter writer = (Typewriter)findViewById(R.id.typewriter); 
writer.animateText("Lorem ipsum dolor sit amet"); 
//wait until animation finishes to perform further actions 
+0

Future 개체를 사용 하시겠습니까? – Neijwiert

+0

어떻게하면됩니까? 나는 그것에 대해 아무것도 모르고, 나는 기본적인 runnable로 이것을 먼저하는 방법을 배웁니다. – suue

+0

@suue Thread 클래스의 join 메소드를 사용하면이 [튜토리얼] (http://www.tutorialspot.com/java/lang/thread_join.htm) 또는 [this one] (http : //www.javatpoint. com/join() - method) –

답변

2

내가 어떤 동기를 찾을 수 없습니다 해결책. 대신 나는 두 번째 작업을 모든 문자를 인쇄하는 데 필요한 시간까지 연기했습니다.

Handler handler = new Handler(); 
handler.postDelayed(new Runnable() { 
    public void run() { 
    animation.start(); 
    } 
    }, timeNeeded); 
관련 문제