2016-02-27 2 views
0

Здравствуйте, я хочу, чтобы на экране появлялся машинный эффект, где каждые несколько секунд появляется буква после предыдущего. Я думал о том, что у меня есть строка со всем текстом, который я хочу написать, и каждую секунду я беру первый символ этой строки, удаляю его и добавляю в другую строку. Например:Эффект пишущей машинки Java

String text = "hello world"; 
    String onscreenText = ""; 

Тогда onscreenText бы «ч» в нем, и текст будет иметь все, кроме «ч» в нем и так далее. Как удалить первый символ из строки и добавить его в следующую строку?

ответ

1

Вам нужно напечатать строку по одному символу за раз, с небольшой задержкой между каждым символом. Для этого вам понадобится цикл для печати каждого символа из строки с небольшой паузой для каждой итерации. Команда sleep() может использоваться для приостановки сценария.

String text = "hello world"; 
int i; 
for(i = 0; i < text.length(); i++){ 
    System.out.printf("%c", text.charAt(i)); 
    try{ 
     Thread.sleep(500);//0.5s pause between characters 
    }catch(InterruptedException ex){ 
     Thread.currentThread().interrupt(); 
    } 
} 

Update с помощью метода drawString() нарисовать подстроку:

String text = "hello world"; 
int i; 
for(i = 1; i <= text.length(); i++){ 
    g.drawString(text.subString(0, i), x, y);//Where g is your Graphics object and x and y are the coordinates you want to draw at 
    try{ 
     Thread.sleep(500);//0.5s pause between characters 
    }catch(InterruptedException ex){ 
     Thread.currentThread().interrupt(); 
    } 
} 
+0

Вы протестировали его? потому что метод 'print()' ошибочен – Pragnani

+0

Я буду рисовать его с помощью шнурка на рамке, неважно? –

+0

Он должен был быть 'printf()'; он был исправлен. – Andrew

0

Если вы хотите, чтобы уменьшить строку, вы можете позвонить: текст = text.substring (1, text.length), но конечно, только при наличии более одного символа внутри. Остальные с задержкой потока уже объяснялись другими плакатами. Возможно, вы также можете взглянуть на класс Timer для планирования отложенных задач.

0

Super Simple to and easy. Не обращайте внимания на расширенный класс TextView. Позволяет сделать его простым и легким для всех. Проверьте это. Сначала создайте класс под названием «Пишущая машинка». Затем скопируйте и вставьте этот код в этот класс. закрыть класс.

import android.os.Handler; 
import android.widget.TextView; 

public class Typewriter { 

    private String sText = new String(); 
    private int index; 
    private long mDelay = 100; 

    TextView textView; 

    public Typewriter(TextView tView) { 
     textView = tView; 
    } 

    public void animateText(String string) { 
     sText = string; 
     index = 0; 

     textView.setText(""); 

     new Handler().removeCallbacks(characterAdder); 
     new Handler().postDelayed(characterAdder, mDelay); 
    } 

    private Runnable characterAdder = new Runnable() { 
     @Override 
     public void run() { 
      textView.setText(sText.subSequence(0, index++)); 

      if (index <= sText.length()) { 
       new Handler().postDelayed(characterAdder, mDelay); 
      } 
     } 
    }; 
} 

Теперь, после создания этого класса, новый класс, который вы хотите реализовать для этой анимационной функции, очень прост. Давайте скажем, например, вы хотите добавить новый класс под названием MainActivity.

import com.utilities.Typewriter; 

import android.app.Activity; 
import android.os.Bundle; 
import android.widget.TextView; 

public class MainActivity extends Activity { 

    private Typewriter writer; 

    private TextView tv_textView; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) {   
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.main); 

     tv_textView = (TextView) findViewById(R.id.tv_textView); 
     writer = new Typewriter(tv_textView); 
     writer.animateText("Super Simple Animation"); 
    } 
} 

Thats it and your done. Супер Простой оставить меня снова спасибо.

Смежные вопросы