夏バテで食欲が減衰しているmizkyです。
おとといの晩飯は、半額のたこ焼きオンリーでした。笑
さて、今回の内容は件名にも書いてある通り
Android Studioでスマホの画面サイズを取得して、取得したサイズから文字の大きさを決める方法です。
1. この記事を書くことになった理由
会社の同期(^ω^)
てめえの作ったアプリ、文字が見切れてるぞ!!
俺(^ω^)
そんなわけねーだろwww 天才の俺がデザインしたんやぞ!!
↓LINEで送られてきた画像↓

俺(^ω^)
私が悪うござんしたwww
というわけで修正します。教えてくれてありがとう、会社の同期よ。
修正するついでに、どのようなコードで文字のサイズをしているかを記載しておこうかなと思い、本記事を書いております。
ちなみに、実際にバグってたアプリをしてみたいかたはこちら。
興味があったらやってみてくださいね。
2. コード内容
2-1. あらすじ
実際にアプリを作った時に、どういう指示を与えていたのかを記載します。
まずはプレーヤーの使用している機種の画面サイズを取得します。

そして、画面に表示されている文字の大きさを、先ほど取得したサイズの何パーセントの大きさにする、というコードを書きました。
例えば、ユーザー機種の高さが100として、文字の大きさを10にしたいときは、
取得した縦のサイズの10%の大きさにするという指示を与えれば、OKです。

ここで気を付けたいのが、TableRowやLinearLayout・・・すなわち文字を入れる枠の大きさが、
文字の大きさよりも大きくなるようにしないといけません。
上記の例で考える場合、文字を入れる枠の高さは、画面に表示する文字の高さ:10よりも大きくしないといけません。
すなわち、10以上の数字ですね。
もし枠が文字よりも数字より小さければ、導入部分で触れた文字が見切れるというバグが発生しちゃいます。
ってことで、バグ原因の推測もできたし、ちゃちゃっと修正しちゃうべ。
2-2. ユーザーが使用している機種の縦サイズを取得する
早速コードを記載します。
1 2 3 4 5 6 | WindowManagerwm=(WindowManager)getSystemService(<em>WINDOW_SERVICE</em>); Displaydisp=wm.getDefaultDisplay(); Pointsize=newPoint(); disp.getSize(size); intheight=size.y; |
最初の2行でユーザーの使用している機種の画面の大きさを取得しております。
そして、残りの3行で縦サイズを取得しています。
heightが画面の高さを表しております。
2-3. 枠(TableRow)の高さを決める
次に、前の段落で説明した「枠」の高さを指定します。
1 2 3 4 | TableRowTableRow1_1=findViewById(R.id.TableRow1_1); ViewGroup.LayoutParamsframe0=TableRow1_1.getLayoutParams(); frame0.height=(int)(height *0.15); |
1行目:xmlで作成したTableRowを定義します。
※作成者の私もなるべく分かりやすいように記載するよう心がけていますが、全てを詳細に語ると長編小説になっちゃうので、不明点等ございましたらお問い合わせフォームからご連絡お願いいたします。
3行目:1行目で定義したTableRowのサイズを定義します、という宣言です。
4行目:実際にTableRowの高さを指定してあげます。
ここでは、取得したユーザーの画面の高さの15%の大きさにしてくださいと指定しています。
2-4. 文字の高さを決める
かーらーのー、文字の大きさを決めてあげます。
1 2 3 4 5 6 7 | normal_Text[0]=(TextView)findViewById(R.id.title_starting); floatdensity=getResources().getDisplayMetrics().density; floatscaledDensity=getResources().getDisplayMetrics().scaledDensity; floatscale=scaledDensity/density; normal_Text[0].setTextSize(TypedValue.COMPLEX_UNIT_PX,height *0.15F*0.7F/scale); |
この辺で書くの面倒になってきたwww
とりあえず4行目で、枠の高さの0.7倍で文字の高さを指定します。
この手順でコードを書いてあげれば文字の高さを余裕のよっちゃんで指定してあげることができます。
3. てか、結局文字がはみ出している原因が分からんwww
ここまで読んだ読者はお気づきでしょうか?
何にもコード間違ってなくね?
これは多分会社の同期のスマホがおか(ry
てか、uniform使えば解決すんじゃん?馬鹿すぎワロタwww
って思う方もいるかもしれませんが今回のアプリのAPI Levelでは使えないです。
結局何で文字が見切れてるかは不明なので、引き続き調査します。

「mizky」で「みずき」と読みます。エンターテイナーになりたい。普段はサラリーマン(気持ちは引き篭もりニート)。アプリ開発、HP運営、投資など手広くやっております。九州大学大学院卒業。趣味は旅行、レースゲーム。
コメント