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"

とすることに。

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

http://d.hatena.ne.jp/yokkong/20111116/1321425474

<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"

を追加した。

 

できあがり

うむ。

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

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

参考

 

https://qiita.com/yysk/items/da65ae4c82c84d0c0449

https://qiita.com/hmiyado/items/5e2c9f2b4423e629f4d0

https://dev.classmethod.jp/smartphone/android/android-tips-34-grid-layout/

https://akira-watson.com/android/screen-size.html

http://d.hatena.ne.jp/yokkong/20111116/1321425474

カテゴリー: したい タグ: , , , パーマリンク

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です