2021年2月16日火曜日

Viewの表示非表示状態を保存する

AndroidでTextViewなどのViewの表示切替を行った後、次回のアプリ起動でそのView表示可否状態を維持したいときの保存はSharedPreferencesが便利です。


実装方法

AndroidのViewの表示可否状態(Visibility)は整数型で定義されており、
この値をSharedPreferencesで保存。
アプリ起動時に保存データの読み込みを行えばよいです。
  1. import android.os.Bundle
  2. import android.view.View
  3. import androidx.appcompat.app.AppCompatActivity
  4. import kotlinx.android.synthetic.main.activity_main.*
  5.  
  6. class MainActivity : AppCompatActivity() {
  7. private val sharedPreferences by lazy{ getSharedPreferences("SaveState", MODE_PRIVATE) }
  8.  
  9. override fun onCreate(savedInstanceState: Bundle?) {
  10. super.onCreate(savedInstanceState)
  11. setContentView(R.layout.activity_main)
  12. // 保存データ読み込みを行ってViewに設定
  13. textView.visibility = sharedPreferences.getInt("visibility", View.VISIBLE)
  14. }
  15.  
  16. fun clickButton(view: View) {
  17. val value = if (textView.visibility == View.VISIBLE) View.INVISIBLE else View.VISIBLE
  18. textView.visibility = value
  19. // 状態を保存する
  20. sharedPreferences.edit().putInt("visibility", value).apply()
  21. }
  22. }
コードにある
View.VISIBLEが「表示」、View.INVISIBLEが「非表示」を表しており、これがInt型です。
なので、View.visibilityをSharedPreferencesに保存すればよいです。

サンプルコードの全体

javaバージョンもこっちに載せとく

0 件のコメント:

コメントを投稿