2021年2月16日火曜日

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

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


実装方法

AndroidのViewの表示可否状態(Visibility)は整数型で定義されており、
この値をSharedPreferencesで保存。
アプリ起動時に保存データの読み込みを行えばよいです。
import android.os.Bundle
import android.view.View
import androidx.appcompat.app.AppCompatActivity
import kotlinx.android.synthetic.main.activity_main.*

class MainActivity : AppCompatActivity() {
  private val sharedPreferences by lazy{ getSharedPreferences("SaveState", MODE_PRIVATE) }

  override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    // 保存データ読み込みを行ってViewに設定
    textView.visibility = sharedPreferences.getInt("visibility", View.VISIBLE)
  }

  fun clickButton(view: View) {
    val value = if (textView.visibility == View.VISIBLE) View.INVISIBLE else View.VISIBLE
    textView.visibility = value
    // 状態を保存する
    sharedPreferences.edit().putInt("visibility", value).apply()
  }
}
コードにある
View.VISIBLEが「表示」、View.INVISIBLEが「非表示」を表しており、これがInt型です。
なので、View.visibilityをSharedPreferencesに保存すればよいです。

サンプルコードの全体

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

0 件のコメント:

コメントを投稿