デバイスの回転を検出して画像AとBを入れ替え成功。
縦長は一枚表示。
横長は左右並べて二枚表示。
回転を機にモードを切り替えられるかの実証である。
【MainViewModel.kt】
Int に変えました。
class MainViewModel: ViewModel() {
val screenType: MutableLiveData<Int> by lazy { // 1-portrait 2-landscape
MutableLiveData<Int>()
}
override fun onCleared() {
super.onCleared()
}
}
【MainActivity.kt】
class MainActivity : AppCompatActivity() {
private val viewModel:MainViewModel by viewModels()
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
if (savedInstanceState==null) {
viewModel.screenType.value = 0
setImage()//初期画像セット
}
val dispTypeObserver = Observer<Int> { type ->
if ( dispTypeObserver(type) ) return@Observer
}
viewModel.screenType.observe(this, dispTypeObserver )
}
@SuppressLint("SwitchIntDef")
override fun onConfigurationChanged(newConfig: Configuration) {
super.onConfigurationChanged(newConfig)
when (newConfig.orientation){ //回転を検出した時
Configuration.ORIENTATION_PORTRAIT ->
viewModel.screenType.value = 1
Configuration.ORIENTATION_LANDSCAPE ->
viewModel.screenType.value = 2
else -> viewModel.screenType.value =0
}
}
fun dispTypeObserver(type:Int): Boolean {
val imageView = findViewById<MyImageView>(R.id.image_viewer)
//省略 縦長と横長で画像を変える処理
return false
}
fun setImage(){
//省略。初期画像表示
}
}
dispTypeObserver(type:Int)メソッドは、onCreate()内の行数の減少のための実証確認。
次は画像処理を考えるのか?
ファイル名の排出。ここで画像の縦横比で条件分け。
条件により回転ロックも有り。
1枚、2枚の画像生成。bitmap排出。
Observerにbitmapを渡し描画。
タッチイベントも考えるのか。