投稿

12月, 2023の投稿を表示しています

アンドロイドアプリ「相撲目覚まし」更新しました。

10月末に公開していた「相撲目覚まし」の新しいバージョンを公開しました。何とか今年中にできました。 画面を長押しすれば操作ガイドが現れたり、アラームをキャンセルしたときの音声をすぐにストップできるようにしたなど、使いやすくなったと思うので、インストールしている方はどうぞ更新してください。 https://play.google.com/store/apps/details?id=mashro.com.wixsite.mashro.dc06 です。

画面回転で苦労した話(原因はわかった)

画面を回転させると、なぜかレイアウトが崩れてしまう。 https://qiita.com/QiitaD/items/7d405e93f39a4a3c9d95 などを参考にさせていただいて、ちゃんと縦用の画面と横用の画面を作って、それぞれ layout と layout-land のフォルダに入れているのに、縦で立ち上げた画面を回転させても横用の画面にならず、縦用のレイアウトを無理やり横に合わせた形になってしまう。その逆も同じ。横で立ち上げた画面を縦にするときもうまくいかない。つまり、レイアウトの切り替えをやってくれないのである。その理由がわからず、ずいぶん悩んだ。 今度やっとその原因がわかったのだが、画面回転を検知するための設定に問題があった。具体的には、マニフェストの当該Activityに "android:configChanges="orientation|screenSize" を追記したとき、この問題が起きるようだ。 原因はわかったがまだ問題は残る。上記の追記は画面回転を検知するためには必要。 今回は、アプリの立ち上げ時にメッセージを出すにあたって、画面回転するたびに同じメッセージが出てはうるさいので、回転の後すぐはそれが出ないようにするために、この機能を使っていたのだった。 しかしこれをやると、画面のレイアウトが崩れてしまう・・・この両立をする方法はないのか。 (ちなみに、無理やり縦用と横用のレイアウトに違う名前を付けて、アクティビティ上で画面の向きを検知して 、 縦の時はsetContentView(縦用レイアウト)、横の時はsetContentView(横用レイアウト)としてみたが、 やはりレイアウトは切りかわらなかった。) 参考までに、画面回転の検知には、上記の追加を行ったうえで、以下のようなコードを AppCompatActivityの中に書く。この場合、画面が回転したらsharedPreferenceの"Rotated"がtrueになるので検知できる。 override fun onConfigurationChanged(newConfig: Configuration) { super.onConfigurationChanged(new