フリープログラマー日記

iOS,アンドロイド開発を気ままにしながら生きてるおじさんのブログです。

第3回 iOSとAndroidで似た画面を作る方法!

iOSAndroidの画面を似せて行きます。
まず、Androidの上部のバー(タイトルバーであってる?)・・・
邪道なんでしょうが、

public class MainActivity extends AppCompatActivity {

public class MainActivity extends Activity {

に変えてやります。

そして、画面の色も同じに。

前回のプログラムでiOSでは、AppDelegate.swiftの中で

self.window?.backgroundColor = UIColor(red: 1, green: 1, blue: 0.6, alpha: 1)

と色指定しています。

Androidで同じ画面の色にするためにMainLayout.javaのコンストラクタ内に

this.setBackgroundColor(Color.argb(255,255,255,153));

としています。


f:id:momonga117:20180504194209p:plain


ここまでで、iOSAndroidの見た目は似てきたのではないでしょうか。
上下の機種独特な部分はこのままにしておきます。


iOSでは、AppDelegate.swiftから(ビューコントローラ)へ
Androidでは MainActivity.javaから(リラティブレイアウト )へ
制御を移すことによって、同じ構造のアプリ作りができそうです。

例えば(ビューコントローラ)を gameController.swift
(リラティブレイアウト )を gameController.java
というようにすれば、クラスの構築をかなり近いものにできます。

「なぜ、リラティブレイアウト?」

参考書には、リニアレイアウトばかりです。

自由度の高さと移植性を考えて私は専らリラティブレイアウト。
位置を決めて描画するには楽なんです!!次回やって見ますね。
(実はリニアレイアウトは使ったこともない・・・というのが真相)

ところで、一番困るのが、単位が違うこと。

swiftでは画面関係はほとんど、CGFloatという単位を使い、javaではint。

カラー指定もこの単位を使うので、白を表す場合なら
swiftでは UIColor(red: 1, green: 1, blue: 1, alpha: 1)
javaでは Color.argb(255,255,255,255)

(UIColor.white使えば?って突っ込まないでね。)
 
swiftでは0〜1の小数、javaでは0〜255の整数。

フェードアウトするときには、alphaを変化させたりするのでAndroidで結構大変です。

どうしてこんなに違いがあるのって聞いても始まらないので、とにかく頑張ってプログラミング。

あ、申し遅れましたが、プログラミングは三度の飯の次に好きなものです。はい。