Androidアプリ開発の学習をしている初心者です。
とあるタイミングで、画面にアルファ値0のテキストビューとして配置していたエラー文をアニメーションで表示した数秒後に、またアルファ値0にアニメーションして非表示にするという処理を実現したいと考えています。
ただし、数秒経つ前にエラー文がタッチされたらすぐに非表示にする処理を同時に実装しています。
そして、数秒経つ前にエラー文をタッチして非表示にした後、再びエラーを表示させた時に、設定した時間が経つよりも前に消えてしまいます。
Kotlin
1 2override fun onCreate(savedInstanceState: Bundle?) { 3 super.onCreate(savedInstanceState) 4 setContentView(R.layout.activity_main) 5 6 tv_error.setOnClickListener(OnButtonClickListener()) 7} 8 9 10private inner class OnButtonClickListener: View.OnClickListener { 11 override fun onClick(v: View?) { 12 when(v?.id) { 13 R.id.bt_error_catch -> { catchingError() } 14 R.id.tv_error -> { 15 if(tv_error.alpha != 0f) { 16 tv_error.run { 17 animate().alpha(0f).setDuration(0) 18 } 19 } 20 } 21 } 22 } 23 24 25 26fun catchingError() { 27 28 if(tv_error.alpha != 255f) { 29 tv_error.run { 30 animate().alpha(255f).setDuration(200) 31 } 32 } 33 34 Handler().postDelayed( { 35 tv_error.run { 36 animate().alpha(0f).setDuration(200) 37 } 38 }, 5000) 39 40 } 41
これは、エラー文をタッチして非表示にしても、catchingError()のHandler().postDelayed({ Runnable { ... } }, 5000)が待っているからだと思います。
タッチイベントなどが発生した時に、この処理を中止にするような方法はあるでしょうか。
教えて頂けると助かります。
宜しくお願い致します。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2020/02/27 00:33