案外と誰も、指摘のないフォントのサイズについてのメモです。
アプリを作ってると、フォントのサイズを16とかに指定しても、端末が違ったりすると、フォントのサイズが違って、スマホだと見やすいのに、タブレットだと、文字が小さくなってしまう場合とか、dpiとかで、密度とかで分けても、横幅が小さい場合と長い場合でどうしても、気になる事があったりします。
今回も、独自で考えてやったもので、「これがスタンダードだ」というものではないのですが参考までにご紹介させていただきます。
step1
デザインを作る時に、例えば横幅480のデザインにしたら、1*480のサイズのstone.pngとかそういう画像を用意します。(縦幅1横幅480)
step2
Bitmap _bm = BitmapFactory.decodeResource(getResources(),R.drawable.stone); int _w = ((WindowManager) getSystemService(WINDOW_SERVICE)).getDefaultDisplay().getWidth(); float _rate = (float) _bm.getHeight() / (float) _bm.getWidth(); float _scale = (float) _w / (float) _bm.getWidth();
を書きます。(既にdisplayのgetWidthは▲マークがついちゃいますが。。)
step3
デザインを作成した時に、24ptとかで作っていたら、
.setTextSize(24*_scale);
とかにすると、サイズがデザインで作った感じとほぼ同じになります。
解像度が高かろうが、低かろうが、横幅が長かろうが、短かろうか。
以上です。
で、下記、解説です。
【解説】
480pxの横幅で作った時って、960pxに表示する時に、2倍のフォントサイズになりますよね。
その部分で480pxのものが480で表示されるのであればいいのですが、480pxのものって、388とかこっちの想定と違ったサイズになるんですよ。読み込むと。
理由としては、画像解像度なんですが、画像解像度も独自に細かく指定したりするのは面倒くさいので、横幅を測るだけのpngを読み込んで、サイズを測ります。
で、測った値と横幅を測定して、拡大比率がわかるで、フォントにはその拡大比率を適用します。
そんなところです。