デジホリのblog

釣りと自転車とDIYを愛するオヤジのブログ

2017年07月

100円ショップにスマホ用の魚眼レンズがあったので衝動買い。



こんなものが100円ショップで手に入るとは、、、
ってことで、試写。

これが通常の場合


で、魚眼


ケラレ(っていうのか)がひどいな。
まぁ100円だし、こんなもんか。

だんだんわかってきた。

かなりボケていたんだけど、densityってintだと思い込んでしたけどfloatだった。
だから、LG optimus it の densityは1.5(hdpi)だし、nexus7 2012 は 1.3312501(tvdpi)という変な解像度だった。
ただ、dp単位系で全部に合わせるUI設計は無理。
ってことで、解像度ごとに layout ファイルを分ける必要があるということがわかった。
Android アプリ設計では常識?なのかな。

ってことで、関数キーも配置した完全版?のUIを作った。

Screenshot_20170724-083125

あとは、プログラムのセーブ/ロードも実装したいんだけど、そもそもAndroidにはファイルオープンダイアログがないみたい。
自力で作るしかないみたいな記事があったけど難しそう。。

一応、画面設計をちょっとだけ真面目にやってみた。
画面解像度って端末によって異なるので、設計がすごい難しいのね。
正確?にいうと、画面解像度とピクセル密度というのがある。
ピクセル密度は
x = getResources().getDisplayMetrics().density
みたいな感じで調べることができるのだが、
これを使ってdp単位(密度非依存のピクセル単位)で位置を指定すれば、どんな端末でもほぼ同じようなレイアウトになるはず。

なんだけど、あまりうまくできないっす。
例えば、開発環境のエミュレータ(これはNexus4相当)だとこんな感じ。
スクリーンショット emulator(Nexus4)

私のメインで使っているスマホ(Zenfone2 laser)
微妙に違うけど、ほぼ狙い通り。(ってか、自分の通常の環境に合わせて作っているから当たり前)
Screenshot_ASUS_Zenfone2_laser

昔使っていたスマホ(Galaxy S4)
これって、ピクセル密度がZenfoneより高い。でもまぁそんなにレイアウト崩れは起こっていない。
Screenshot_SAMSUNG_Galaxy_S4

子供が昔使っていたスマホ(LG optimus it)
問題はこれ。
ピクセル密度がZenfoneの半分なんだけど、変な感じになっちゃった。
よくわからん。
Screenshot_LG_Optimus_it


あと、キーボードは、キーボードの画像を貼って、その上に透明ボタンを配置しているんだけど、Zenfoneだと、横幅ベースに画像がリサイズされているため、ボタンの位置は狙い通り。
でもGalaxyは縦の幅が狭いため、縦幅ベースでリサイズされている。(横方向が画面に対して少し縮小されている)
だから、キーの位置が微妙にずれてしまっている。
ちゃんとロジックを組まないとダメだな。(手抜きすぎた)

ということで、画面の設計がすごく難しい(というかすごく面倒臭い)ということがわかった。

その後、見た目もちゃんと作ってみた。
昔マシン語で作ったゲームも動作した。

06
 
BEEPの実装がうまくできない。
あと、CSAVE/CLOADも作らないとなぁ。
難しいな。

今年に入ってからAndroidでポケコンエミュレータを作りたくって、週末プログラミングしてたんですが、やっとプロトが動きました。
19

感動ものです。
名付けて「ポケコンGO!」かな。
微妙に動きがトロいので、チューニングが必要なのと、見た目もかっこよくしないといけないなぁ。

参考にしたのは、
こばやしさんのサイトとか、いしじまさんのサイトです。

実は私、Javaってほとんど知らなくって、今回初めてのJavaプログラミングをしてみたんですが、勉強がてらやっていたのですごい時間がかかっています。
Hello world!から始まって、やっとここまでできた。
わからないことだらけで、Google先生に聞きまくりです。

ちなみに、この手のやつって、関数テーブルを使いたいのですが、Javaって(当たり前ですけど)ポインタがないんですよね。いきなりつまずいた。。。
色々調べて、インターフェース形式にして実装してなんとかなったけど。

あと、コーディングし始めて知ったのですが、Javaってunsignedっていう概念が存在しないんですね。
これってジェネレーションギャップか?(ちょっと違うか)
ということで、基本はintを使うしかなく、非常に馴染めない感じがたっぷりしました。

ってことで、とりあえず動くものができました。
あと、BEEPがまだ実装できていないのと、CSAVE/CLOADもなんとかしないとなぁ。。。

まぁ、ゆっくりと進めたいと思います。

↑このページのトップヘ