まずは画面を作りたいなぁと思って色々調べた。
盤面づくり
先人たちのサンプルを見るとcanvasというものを使っているようだ。
なにそれ。
画面サイズ取得してー、計算で位置設定してー、とか。
そしたら石を置くマスの位置取得とかどうやるんだーとか。
ちょっととっつきにくいなぁ…と思ったので、他の表現方法を探す。
ていうかできることが見よう見まねでxmlを編集することだけだし、その延長でなんとかならんかなぁと思ったのでTextViewを並べりゃいんじゃね?となった。
そんでlinearlayoutを入れ子にしてみたりしたけどなんかうまくいかない。
ていうか、正方形の格子状のレイアウトみたいなやつって無いのね。
カスタムViewというものを使って自作してる人や、Tablelayoutを使って試行錯誤している人や色々。手に余ってしまう…。
失敗集
で、Gridlayoutを使ってみることにした。
TextViewを計64個配置すれば盤面ぽくなるはず…!
できたのがこちら
ぽく見えるっちゃ見える。
でも実機のP20Proで見ると
こうなる!
想像でしかないけど、
app:autoSizeTextType="uniform"
が縦方向の長さを基準にフォントサイズを決めちゃってんのかなーと。
ということは、画面サイズの横幅を取得して、GridLayoutの縦サイズに設定すればいいのでは…?と思い調べてこんな感じでコピペしてみたけど
WindowManager wm = (WindowManager)getSystemService(WINDOW_SERVICE); Display disp = wm.getDefaultDisplay(); Point realSize = new Point(); disp.getRealSize(realSize); int realScreenWidth = realSize.x; GridLayout gridLayout = findViewById(R.id.gridLayout1); GridLayout.LayoutParams params = new GridLayout.LayoutParams(); params.height = realScreenWidth; gridLayout.setLayoutParams(params);
結局うまくいかず、アプリが強制終了してしまった。。。
もうこれは欲を出さずに、直でサイズ指定しろや、ということなのだろうな。
ということで、GridLayoutのw,hを
android:layout_width="match_parent" android:layout_height="400dp"
とすることに。
あと枠線さえあればそれっぽく見えるだろと調べ、こちらの
<shape xmlns:android="http://schemas.android.com/apk/res/android"> <stroke android:width="2px" android:color="#CCCCCC" /> <padding android:left="2px" android:top="2px" android:right="2px" android:bottom="2px" /> <corners android:radius="2px" /> </shape>
をDrawableに作成。
そんでTextViewに
android:background="@drawable/tv_border"
を追加した。
できあがり
うむ。
とりあえずそれっぽくはなったが、果たして動かせるのだろうか。
でもやっぱ楽しいな、試行錯誤が楽しい。
参考
コメント