aswww log

エンジニアの技術録。アプリとかウェブとか

SharedPreferenceの変更時に警告アラート表示

アプリの設定(SharedPreference)を変更した際、スマホの画面解像度(画面サイズdp)が小さいとWebViewが表示崩れが発生する恐れがでてきた。
表示崩れが発生する可能性がある設定に変更した時、警告アラートを出すことにした。

まず、基準となる解像度を調査。以下のようなQiita記事を参考。

2015年発売Android端末のdp解像度まとめ
http://qiita.com/nein37/items/0a622f7ebbbb92db93d5#_reference-05eb2ffe676dfafa464c

んで画面サイズを取得
Androidでデバイスの大きさをdpで取得する
http://aroundthedistance.hatenadiary.jp/entry/2015/03/16/122827
(一部引用)

DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
float dpWidth = displayMetrics.widthPixels / displayMetrics.density;

それで調べた通り、PreferenceFragmentなクラスに実装

    public static class SampleFragment extends PreferenceFragment {

	    ︙
		//設定変更された時に呼ばれる
        @Override
        public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
            if(key.equals(対象の設定[])){
                //画面解像度(横幅)をdbで取得
                DisplayMetrics displayMetrics = getResources().getDisplayMetrics();
                float dpWidth = displayMetrics.widthPixels / displayMetrics.density;
				
                if(dpWidth <= 基準サイズ){
                    int screenSize = sharedPreferences.get(key, null);
				    //画面サイズ最大のときのみ警告を出す
				  }
			    }
            }
        }

参考:
http://u64178.blogspot.jp/2014/07/android-preferencefragment-preference.html