AndroidStudioでリバーシの画面を作った

スポンサーリンク
スポンサーリンク

まずは画面を作りたいなぁと思って色々調べた。

スポンサーリンク
お品書き

盤面づくり

先人たちのサンプルを見ると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"

とすることに。

あと枠線さえあればそれっぽく見えるだろと調べ、こちらの

TextViewに枠線を付ける&背景色を変更する - yokkongの日記
前に作ったアプリの機能追加をしたときのメモ。 TextViewに枠線を付ける 表みたいなものを作ろうと思いTextViewを並べてみたのだが、TextViewには枠線を表示するプロパティが無く、そのままだと真っ白なハコが並んでいるだけになっ...
<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"

を追加した。

 

できあがり

うむ。

とりあえずそれっぽくはなったが、果たして動かせるのだろうか。

でもやっぱ楽しいな、試行錯誤が楽しい。

参考

 

404 Not Found - Qiita - Qiita
Android Studio の文字列置換 - Qiita
Android Studio での文字列置換方法時々必要になるけれど,手作業でやると面倒な作業の代表格が文字列置換.Android Studio には,3種類の文字列置換があります.(ちなみに…
Android Tips #34 Android 2.1 から GridLayout を使う | DevelopersIO
[Android] スクリーンサイズを取得する
アプリの画面サイズを取得したい場合があります。タブレットとスマホで表示を変えたいあるいはテキストの位置を正確に表示したいなど画面サイズは getWindowInsets() を使って取得します
TextViewに枠線を付ける&背景色を変更する - yokkongの日記
前に作ったアプリの機能追加をしたときのメモ。 TextViewに枠線を付ける 表みたいなものを作ろうと思いTextViewを並べてみたのだが、TextViewには枠線を表示するプロパティが無く、そのままだと真っ白なハコが並んでいるだけになっ...

コメント

タイトルとURLをコピーしました