2014-07-15 2 views
0

동적으로 텍스트를 표시하려고 생각했지만 질문이 하나 있습니다.표시 문자열 값 변경 (더 높은 값 이상의 문자)

저는 매우 긴 문자열을 가지고 있습니다 ... 몇 천자 이상의 문자가 있습니다. 시간이 지남에 따라 가치가 커집니다. 이제 값이 0 일 때 나는 아무 것도 보이지 않기를 원합니다. (쉬운 지금까지는 :)) 그러나 값이 증가함에 따라 문자열이 천천히 나타납니다 (하나의 '증분'당 50이라고합시다). 타이핑 효과를 내기에 이상적입니다.

내 솔루션 그럼 난이 지금까지 작동하고 점진

private Handler mHandler = new Handler() { 
    @Override public void handleMessage(Message msg) { 

     switch (msg.what) { 
      case VALUE_CHANGE: 
       value = (int)msg.arg1; // get value from message 
       mValueView.setText("" + mStepValue); // display value on screen 
       //here call the function to display text 
       break; 

      default: 
       super.handleMessage(msg); 
     } 
    } 
}; 

위해 기다리고 내 처리기에서 디스플레이 함수를 호출 줄에서 onCreate 방법

string displayedText = ""; 

에 빈 문자열을 선언했다. .. 문제가되는 (나를 위해) 텍스트를 표시하는 부분. 값은 1 초에서 10 초 사이의 다른 시간으로 전송 될 수 있습니다 (값이 변경 될 때 임의입니다).

+0

내부 텍스트 표시 방법은 무엇입니까? 여기에 문제가 어디 있습니까? – intrepidkarthi

+0

글쎄, 나는 디스플레이 된 텍스트를 추가하는 문자열에서 한 번에 한 문자를 추출하는 방법을 모르기 때문에 아직 디스플레이 텍스트 메서드가 없다. –

+0

질문을 좀 더 명확하게 설명 할 수 있습니까? 이제 텍스트 추출에 문제가 있다는 말을 듣고 있습니다. 귀하의 질문 제목은 다른 것을 말합니다. – intrepidkarthi

답변

0

String에서 전체를 추출하려면 substring 메서드를 사용하십시오.

private String extractText(String input, int length) 
{ 
return input.substring(0, length - 1); 
} 
+0

감사합니다. 문제의 설명과 혼동하여 죄송합니다. 영어가 제 토어가 아닙니다. –

+0

문제 없습니다. 문제가 해결되면 대답을 수락하십시오. – intrepidkarthi

0

지연된 메시지를 사용하십시오. UI를 많이 사용하지 마십시오.

private boolean isCanChange = true; 
private Handler mHandler = new Handler() { 
    @Override public void handleMessage(Message msg) { 

     switch (msg.what) { 
      case VALUE_CHANGE: 
       value = (int)msg.arg1; // get value from message 
       mValueView.setText("" + mStepValue); // display value on screen 
       //here call the function to display text 
       isCanChange = true; 
       break; 

      default: 
       super.handleMessage(msg); 
     } 
    } 
}; 


while(isParsingRunning) { 
    //running parse thread 
    if(isCanChange) { 
     isCanChange = false; 
     mHandler.sendEmptyMessageDelayed(VALUE_CHANGE, 1000);// update every second 
    } 
} 

감소 업데이트 속도

public void parseDocument(...) 
{ 
    long startParsingTime= System.currentTimeMillis(); 
    while(isParsing) { 
     // parse 
     if(isCanChange) { 
      isCanChange = false; 
      mHandler.sendEmptyMessageDelayed(VALUE_CHANGE, (System.currentTimeMillis() - startParsingTime)/1000);// update every second 
     } 
    } 
} 

참고 : 캐스팅 할 필요가있을 수 있습니다. 내 손에 IDE가 없다.

+0

문제를 설명하는 데 다소 혼란 스럽습니다 ... 메시지 수신 작동 :) –