Создание текстов один за другим (эффект пишущей машинки) в Android Kotlin ⇐ Android
-
Anonymous
Создание текстов один за другим (эффект пишущей машинки) в Android Kotlin
Это может быть простой вопрос, или я мог бы сделать свой проект намного лучше своих возможностей, но мне действительно не помешала бы помощь в этом вопросе, на которую ушли часы поиска и проверки чужого кода.
Моя активность включает в себя три фрагмента, использующих ViewPager2, которые я буду называть фрагментами A, B и C. Среди них фрагмент B загрузит еще одно неопределенное количество фрагментов. Я назову его Фрагментом X1, X2... возможно, X99 или около того. В этих фрагментах будет использоваться эффект пишущей машинки, поэтому я поместил функцию анимации текста во фрагмент B, так как подумал, что будет лучше там, где загружаются фрагменты, а не в каждом фрагменте Xn.
fun TextView.textDisplay(text: Int) { val targetstring: Int = текст если (текстаним) { for(i в 1..targetstring){ println(targetstring.toString()) Thread.sleep(textanimspeed.toLong()) } // Эффект пишущей машинки } еще { println (целевая строка) } // отображаем тексты сразу } Во фрагменте B также есть некоторые значения, которые я планирую использовать для установки размера текста, скорости анимации и того, будет ли он анимирован или нет.
var textsize:Byte = 10 вар textanimspeed: Байт = 100 вар textanim: Boolean = true а затем попытался загрузить фрагмент X1.
(активность как FragmentB).TextView1.textDisplay(R.string.stringX1) Оказывается, эта строка кода недоступна, а «textDisplay» является «неразрешенной ссылкой».
Если я удалю параметр получателя «TextView» из textDisplay(text: Int) и исполняемый код, студия Android не скажет, что он неразрешен, но он все равно недоступен. Прежде всего, я считаю, что тексты должны быть анимированы внутри TextView. Запустив приложение, я не увидел никаких сообщений.
Второе, что я попробовал, — это скопировать Java-код с эффектом пишущей машинки и вставить его, чтобы студия Android автоматически конвертировала его в Kotlin. В результате появились красные пятна, но я от них избавился. Я создал новый класс TypeWriterView.kt, код которого приведен ниже:
класс TypeWriterView: AppCompatTextView { частная переменная mText: CharSequence? = ноль частная переменная mIndex = 0 частная переменная mDelay: Long = 150 // в мс конструктор(контекст: Контекст): супер(контекст) конструктор(контекст: Контекст, атрибуты: AttributeSet?): супер(контекст, атрибуты) частный вал mHandler: Handler = Handler() частный valcharacterAdder: Runnable = объект: Runnable { переопределить fun run() { текст = mText!!.subSequence(0, mIndex++) if (mIndex
Это может быть простой вопрос, или я мог бы сделать свой проект намного лучше своих возможностей, но мне действительно не помешала бы помощь в этом вопросе, на которую ушли часы поиска и проверки чужого кода.
Моя активность включает в себя три фрагмента, использующих ViewPager2, которые я буду называть фрагментами A, B и C. Среди них фрагмент B загрузит еще одно неопределенное количество фрагментов. Я назову его Фрагментом X1, X2... возможно, X99 или около того. В этих фрагментах будет использоваться эффект пишущей машинки, поэтому я поместил функцию анимации текста во фрагмент B, так как подумал, что будет лучше там, где загружаются фрагменты, а не в каждом фрагменте Xn.
fun TextView.textDisplay(text: Int) { val targetstring: Int = текст если (текстаним) { for(i в 1..targetstring){ println(targetstring.toString()) Thread.sleep(textanimspeed.toLong()) } // Эффект пишущей машинки } еще { println (целевая строка) } // отображаем тексты сразу } Во фрагменте B также есть некоторые значения, которые я планирую использовать для установки размера текста, скорости анимации и того, будет ли он анимирован или нет.
var textsize:Byte = 10 вар textanimspeed: Байт = 100 вар textanim: Boolean = true а затем попытался загрузить фрагмент X1.
(активность как FragmentB).TextView1.textDisplay(R.string.stringX1) Оказывается, эта строка кода недоступна, а «textDisplay» является «неразрешенной ссылкой».
Если я удалю параметр получателя «TextView» из textDisplay(text: Int) и исполняемый код, студия Android не скажет, что он неразрешен, но он все равно недоступен. Прежде всего, я считаю, что тексты должны быть анимированы внутри TextView. Запустив приложение, я не увидел никаких сообщений.
Второе, что я попробовал, — это скопировать Java-код с эффектом пишущей машинки и вставить его, чтобы студия Android автоматически конвертировала его в Kotlin. В результате появились красные пятна, но я от них избавился. Я создал новый класс TypeWriterView.kt, код которого приведен ниже:
класс TypeWriterView: AppCompatTextView { частная переменная mText: CharSequence? = ноль частная переменная mIndex = 0 частная переменная mDelay: Long = 150 // в мс конструктор(контекст: Контекст): супер(контекст) конструктор(контекст: Контекст, атрибуты: AttributeSet?): супер(контекст, атрибуты) частный вал mHandler: Handler = Handler() частный valcharacterAdder: Runnable = объект: Runnable { переопределить fun run() { текст = mText!!.subSequence(0, mIndex++) if (mIndex
Мобильная версия