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には枠線を表示するプロパティが無く、そのままだと真っ白なハコが並んでいるだけになってしまった。 「TextView 枠線」ググってみると、次のサイトを発見。 【A...
<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"

を追加した。

 

できあがり

うむ。

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

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

参考

 

GridLayoutでweightを使う - Qiita
GridLayoutとは Android APIが提供するレイアウトのひ...
Android Studio の文字列置換 - Qiita
Android Studio での文字列置換方法 時々必要になるけれど,手作業でやると面倒な作業の代表格が文字列置換. Android Studio には,3種類の文字列置換があります. (ちなみに,それぞれの置換に対応する検索...
Android Tips #34 Android 2.1 から GridLayout を使う | Developers.IO
GridLayout が Android 2.1 から使える! GridLayout は Android 3.0 (APIレベル11) で新たに導入されたレイアウトです。View を Grid 式にレイアウトすることがで …
[Android] スクリーンサイズを取得する
アプリの画面サイズを取得したい事が時々あります。タブレットとスマホで表示を変えたい。あるいはテキストの位置を正確に表示したいなど。画面のサイズと言っても、タイトルバーがあるか無いかで異なってくるので確認してみました。 
TextViewに枠線を付ける&背景色を変更する - yokkongの日記
前に作ったアプリの機能追加をしたときのメモ。 TextViewに枠線を付ける 表みたいなものを作ろうと思いTextViewを並べてみたのだが、TextViewには枠線を表示するプロパティが無く、そのままだと真っ白なハコが並んでいるだけになってしまった。 「TextView 枠線」ググってみると、次のサイトを発見。 【A...

コメント

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