0

私のアプリケーションのクラッシュレポートが1件ありました。どの値を0にするか?

//sWP stands for "Screen Width in Pixels" 
// sW stands for "Screen Width" The code is old though, so I may be incorrect for both variables. 
//res is just getResources() 
int sWP = sW/(res.getDisplayMetrics().densityDpi/DisplayMetrics.DENSITY_DEFAULT); 
float bHeight = 50 * ((float)res.getDisplayMetrics().densityDpi/DisplayMetrics.DENSITY_DEFAULT); 

DisplayMetrics.DENSITY_DEFAULTこれまでにゼロにすることができます:それは、例外は、これら2つのラインの一つであるjava.lang.ArithmeticException: divide by zero

があると言いますか?またはgetDisplayMetrics().densityDpiはいつでもゼロになりますか?

答えて

0

res.getDisplayMetrics().densityDpiは、120,160または240(または同様のもの)です(https://developer.android.com/reference/android/util/DisplayMetrics.html#densityDpiを参照)。

DisplayMetrics.DENSITY_DEFAULTは、常に1603となります。https://developer.android.com/reference/android/util/DisplayMetrics.html#DENSITY_DEFAULTを参照してください。

res.getDisplayMetrics().densityDpi/DisplayMetrics.DENSITY_DEFAULTはintをintで除算するため0を返します。

int sWP = (int) sW/(((double) res.getDisplayMetrics().densityDpi)/DisplayMetrics.DENSITY_DEFAULT);

に二行の最初を変更、それが動作するはずです。

+0

また、sWPを2倍に変更する必要がありますか?この場合も、res.getDisplayMetrics()。densityDpiは320 – Roymunson

+0

になります。@Roymunson sWPをdoubleに変更することは、あなたが言うように私には意味がありません_ // sWPは "ピクセルの画面幅" _を表します。すみません、私はintにキャストするのを忘れました。私は私の答えを編集します。 –

+0

@Roymunson 320の値については、densityDpiを取得すると、誰かがAPI 9にDENSITY_XHIGHを導入するときに、densityDpiのドキュメントをAPI 4から変更するのを忘れてしまった。 –

関連する問題