読者です 読者をやめる 読者になる 読者になる

書くことないです。

ayamadoriが独り言を呟く日記。

こんなこともやってます。(が、もはやあまりやる気は無かったりする)

【Nothing to release./携帯電話向けSoftware】

PiClipをNokia Asha Platform端末に特化してみるテスト。その2。

Mobile Phone MIDP Programming

前回の続き。
とりあえず画面上に目に見える部分から。
説明のために昨日と同じスクリーンショットを貼っておく。
f:id:ayamadori:20130525163507p:plain

Canvas

画面サイズがS40 DP2の400x240から320x240(QVGA)に変更になっている。
解像度だけでなくアスペクト比も変わっているので、再調整が必要かもしれない。ただ従来のJavaアプリはQVGAをターゲットにして作られていることが多いから、そういう意味ではより互換性が高まったとも言える。
余談だけど、一般的なQVGAを使うことによってハードウェアのコストも下がってるんじゃないかな。
画像左上は

Canvas#setFullScreenMode(true)

かつ

VirtualKeyboard.isVisible();

な状態。当然ながら、他のUI要素は全て非表示となる。
S40 DP2ではVirtualKeyboardの表示/非表示切り替えに伴ってCanvasのサイズが変化していたが、NAP1.0では変化しない。常にVirtualKeyboard非表示のサイズになる。したがって

Canvas#sizeChanged(int w, int h)

も呼ばれない。

画像右上及び左下は

Canvas#setFullScreenMode(false)

な状態。
Status Bar(上端の電波状況や時刻を表示している部分)は常に表示される。
Header Bar("Action"の部分)は

Displayable#setTitle(String s)

が設定される(nullでない)時のみ表示される。多分MIDP2.0準拠。
Toolbar(画面下部のグレー部分)は

  • CategoryBarがある → CategoryBar表示
  • CategoryBarがなく、Commandがある → Command表示
  • CategoryBarもCommandもない → 非表示

となる。

IconCommandおよびCommand

S40 DP2では、IconCommandが画面右上角に表示できたが、NAP1.0では無くなった。
IconCommandは全てCommandとして認識される。すなわち文字表示される。
Commandが画面に表示できる場合、Priority最高のCommandがToolBarに表示され、それ以外は画面下端をスワイプすることによって表示できる。
なお、commandTypeに

Command.BACK

または

Command.EXIT

を設定すると、そのCommandがハードウェアBackキーに割り当てられる。S40 DP2だと画面右下角に表示されていたのが、ハードウェアキーに置きかわっただけ。

CategoryBar

S40 DP2ではいわゆるタブバー的な使い方しかできなかったのに対し、NAP1.0ではいわゆるツールバー的な使い方ができるようになった。
modeに

CategoryBar.ELEMENT_MODE_STAY_SELECTED

を設定するとタブバー的な挙動、

CategoryBar.ELEMENT_MODE_RELEASE_SELECTED

を設定するとツールバー的な挙動になる。IconCommandでアイコンボタンが表示できなくなったのをこれで代用できる。画像右上の『レ点』がまさにそれ。
設定できるCommand数は最大4個。(Backキー除く)

VirtualKeyboard

とりあえずデザインがダサい。もうちょっとどうにかして欲しい。
キーそのものはITU-T準拠で、今まで通り。
基本的に画面最前部に表示されて、画面タッチイベントを最優先で拾うけれど、VKBで拾われなかったとき*1はその背後のアプリで拾われる。
VKBを非表示にする操作はスワイプからBackキー押しに変わった。このとき

CommandListener#commandAction()

は呼ばれない。

その3に続く。

*1:キーとキーの間の緩衝帯をタッチした時など