(58)【調査した分野】(Int.Cl.,DB名)
【発明を実施するための形態】
【0010】
以下、本発明の実施形態について図面に基づき詳細に説明する。
【0011】
図1は、本発明の実施形態に係る可搬情報処理装置の外観斜視図であり、
図2は、同可搬情報処理装置のハードウェア構成図である。これらの図に示される可搬情報処理装置10は、本発明に係るメニュー表示装置の一実施形態であり、その制御方法は本発明に係るメニュー表示制御方法の一実施形態である。また、可搬情報処理装置10で実行されるプログラムは、本発明に係るプログラムの一実施形態である。可搬情報処理装置10は、
図1に示されるように薄型箱状の筐体を有するコンピュータシステムであり、前面の大部分をタッチパネル12のタッチ面が占めており、側面には電源ボタン14やメモリカードスロット15が設けられている。この可搬情報処理装置10は、図示しない充電可能な内蔵バッテリにより駆動される。
【0012】
可搬情報処理装置10は、
図2に示されるように、バス30に接続され相互にデータ送受可能に設けられたMPU16、メモリ18、FPDインタフェース20、タッチパッドインタフェース22、通信部24、不揮発性メモリ26及び媒体リーダ28を含んでいる。上述のように可搬情報処理装置10はタッチパネル12を備えており、このタッチパネル12は液晶や有機EL(Electro−Luminescence)によるFPD(Flat Panel Display)12a及び静電容量式その他の方式によるタッチパッド12bからなる。FPDインタフェース20はFPD12aに接続されており、タッチパッドインタフェース22はタッチパッド12bに接続されている。メモリ18はMPU16の作業スペースに用いられる。FPDインタフェース20は、FPD12aに表示すべき画像を保存するメモリを備えており、該メモリに格納された画像を定期的にFPD12aに出力し、該FPD12aにより表示される画像を更新する。タッチパッドインタフェース22は、タッチパッド12bから出力される信号に基づいて定期的にタッチ位置を演算し、MPU16に該タッチ位置を提供する。通信部24は、インターネットなどのデータ通信ネットワークに接続し、データを送信したり受信したりする機能を有する。不揮発性メモリ26は、メモリ18より大容量の記憶手段であり、オペレーティングシステムや各種のアプリケーションプログラムを記憶する。媒体リーダ28は、メモリカード32などのコンピュータ可読情報記憶媒体からデータを読み出したり、そのようなコンピュータ可読情報記憶媒体にデータを書き込んだりする。
【0013】
この可搬情報処理装置10では、ユーザ操作によりスクロールさせることができるメニューを表示するプログラムを実行する。このプログラムは、オペレーティングシステムの一部であってもよいし、多数の画像を表示する画像ビューワや、多数の検索結果を表示する検索プログラムなどのアプリケーションプログラムであってもよい。また、このプログラムは予め不揮発性メモリ26に格納されてもよいし、通信部24によりダウンロードされてから不揮発性メモリ26に格納されてもよい。また、メモリカード32から不揮発性メモリ26にコピーされてもよいし、メモリカード32に記憶されたプログラムがMPU16により直接実行されてもよい。
【0014】
図3乃至
図7は、メニュースクロール中にタッチパネル12に表示されるメニューを示している。また、
図8は、メニューとそのうちの表示範囲との関係を示す図である。
図8に示すように、本実施形態では、タッチパネル12に表示されるメニュー50は、一例として、水平方向に伸びる短冊状のメニュー項目画像1〜8を含んでいる。メニュー項目画像1〜8は、例えば受信日順に並べられた電子メールのタイトルを表すもの、取得順に並べられた音楽データのタイトルを表すものなど、撮影順にならべられた画像データのサムネイルであってよい。これら8つのメニュー項目画像1〜8は、仮想的に、この順で上下に基準間隔Δにて配列されている。すなわち、メニュー項目画像1はメニュー50の上端に配置されており、メニュー項目画像8は下端に配置されている。また、メニュー50は、タッチパネル12に表示される範囲、すなわち表示範囲52を上下に貫くように配置されており、ユーザ操作に応じて表示範囲52に対してメニュー50が仮想的に上下に移動するようになっている。これにより、任意の部分のメニュー項目画像が表示範囲52内に位置し、それらのメニュー項目画像がタッチパネル12に表示される。ただし、メニュー50の移動範囲は制限されており、下方向には、メニュー項目画像1の上端が表示範囲52の上端から所定距離だけ下の位置(位置A)にくるまで移動可能であり、上方向には、メニュー項目画像8の下端が表示範囲52の下端から所定距離だけ上の位置(位置B)にくるまで移動可能である。また、メニュー項目画像1〜8の間隔は基準間隔Δよりも広がることができる。
【0015】
具体的には、
図3に示すようにタッチパネル12にメニュー項目画像2〜7が表示された状態で、ユーザが指先40をタッチ面に触れたまま矢印42Dにより示される下方向にスライド(ドラッグ)させると、メニュー50は表示範囲52に対して相対的に下方向にスライド量に相応して移動し、これにより、
図4に示すようにタッチパネル12にはメニュー項目画像1〜5が表示される。この状態では、メニュー50は下方向に限界まで移動しており、メニュー項目画像1の上端が位置Aにある。この状態で、ユーザが指先40をタッチ面におけるメニュー項目画像3が表示された領域に接触させたまま矢印42Dにより示される下方向にさらにスライドさせると、
図5に示すようにメニュー項目画像1とメニュー項目画像2の間隔Δ1、及びメニュー項目画像2とメニュー項目画像3の間隔Δ2がスライド量に応じて広がる。つまり、指先40のタッチ位置に表示されたメニュー項目画像3及びそれよりも上側に配置されたメニュー項目画像1,2については、これらの間隔Δ1,Δ2が広がる。一方、それ以外の間隔は広がらない。なお、
図4と
図5において、メニュー50の上端に配置されているメニュー項目画像1の表示位置は不変である。タッチ位置を上方向にスライドさせると、間隔Δ1,Δ2がスライド量に応じて狭まり、下方向にスライドさせると、間隔Δ1,Δ2がスライド量に応じてさらに広がる。また、指先40をタッチ面から離すと、徐々に、元の基準間隔Δに戻る。
図5において、メニュー項目画像1とメニュー項目画像2の間隔Δ1と、メニュー項目画像2とメニュー項目画像3の間隔Δ2は、同じとしてもよいし、メニュー項目画像1とメニュー項目画像2の間隔Δ1の方が、メニュー項目画像2とメニュー項目画像3の間隔Δ2より狭くなるようにしてもよい。さらにタッチ位置からの距離に応じてメニュー項目画像の間隔Δの距離を段階的に設定してもよい。これによると、
図5において、間隔Δ2の方が間隔Δ1よりも大きくなるように設定する。これによってユーザがより直感的にメニュー項目の端部を意識した操作が可能となる。
【0016】
同様に、
図3に示すようにタッチパネル12にメニュー項目画像2〜7が表示された状態で、ユーザが指先40をタッチ面に触れたまま矢印42Uにより示される上方向にスライド(ドラッグ)させると、メニュー50は表示範囲52に対して相対的に上方向にスライド量に相応して移動し、これにより、
図6に示すようにタッチパネル12にはメニュー項目画像4〜8が表示される。この状態では、メニュー50は上方向に限界まで移動しており、メニュー項目画像8が画面位置Bにある。この状態で、ユーザが指先40をタッチ面に接触させたまま矢印42Uにより示される下方向にさらにスライドさせると、
図7に示すようにメニュー項目画像8とメニュー項目画像7の間隔がスライド量に応じて広がる。つまり、指先40のタッチ位置に表示されたメニュー項目画像7及びそれよりも下側に配置されたメニュー項目画像8については、その間隔が広がる。一方、それ以外の間隔は広がらない。なお、
図6と
図7において、メニュー50の下端に配置されているメニュー項目画像8の表示位置は不変である。タッチ位置を下方向にスライドさせると、間隔がスライド量に応じて広がり、上方向にスライドさせると、間隔がスライド量に応じてさらに広がる。また、指先40をタッチ面から離すと、徐々に、元の基準間隔Δに戻る。
【0017】
また、本実施形態では、ユーザがタッチパネル12に対して指先40でフリックしたことを検出するようになっており、下方向のフリックがなされたことを検出すると、メニュー50を表示範囲52に対して下方向に移動させる(自動スクロール)。フリックは、指先40をタッチ面に接触させたまま所定の基準スピード以上のスピードでスライドさせ、そのまま指先40をタッチ面から離す操作である。フリック後はユーザの指先40はタッチパネル12のタッチ面から離れるが、メニュー50は下方向に移動し続ける。このとき、フリック時のスライドスピードが速ければ速いほど、移動の初速も速くなる。また、時間が経つほどメニュー50の移動速度は遅くなり、最終的には停止する。なお、フリック操作がなされると、メニュー項目画像1〜8の間隔が広がるようにしてもよい。このとき、フリック時のスライドスピードが速ければ速いほど、メニュー項目画像1〜8の間隔が大きく広がるようにしてよい。また、こうした自動スクロールの最中に、メニュー項目画像1の上端が位置Aにくると、メニュー項目画像1〜8の間隔が徐々に広がり、その後、間隔が徐々に狭まり基準間隔Δに戻ると、画面の変化は止まる。
【0018】
同様に、上方向のフリックがなされたことを検出すると、メニュー50を表示範囲52に対して上方向に移動させる。フリック後はユーザの指先40はタッチパネル12のタッチ面から離れるが、メニュー50は上方向に移動し続ける。この場合も、フリック時のスライドスピードが速ければ速いほど、移動の初速も速くなる。また、時間が経つほどメニュー50の移動速度は遅くなり、最終的には停止する。また、こうした自動スクロールの最中に、メニュー項目画像8の下端が位置Bにくると、メニュー項目画像1〜8の間隔が徐々に広がり、その後、間隔が徐々に狭まり基準間隔Δに戻ると、画面の変化は止まる。
【0019】
以上のように、メニュー50を下方向に移動させる操作(フリック又はドラッグ)により、メニュー項目画像1の上端が位置Aにまでくると、メニュー項目画像1は下方向にそれ以上移動せず、代わりにメニュー項目画像1とメニュー項目画像2の間隔が広がる。同様に、メニュー50を上方向に移動させる操作(フリック又はドラッグ)により、メニュー項目画像8の下端が位置Bにまでくると、メニュー項目画像8は上方向にそれ以上移動せず、代わりにメニュー項目画像8とメニュー項目画像8の間隔が広がる。こうして、メニュー50が下限又は上限まで移動していること、つまりタッチパネル12に上端のメニュー項目画像1又は下端のメニュー項目画像8が所定位置に表示されていることを、分かりやすくユーザに伝えることができる。
【0020】
以下、メニュー50を表示する処理についてさらに詳細に説明する。
図9は、メニュー50の表示中、可搬情報処理装置10で管理される各変数の定義を示しており、
図10は、メニュー50の表示中、可搬情報処理装置10のメモリ18に記憶されるテーブルを模式的に示している。これらの図に示すように、メニュー50の表示中は、メニュー項目画像1〜7のそれぞれに関連づけて、その下に位置するメニュー項目画像2〜8との間隔Δ1〜Δ7がメモリ18に記憶される。具体的には、間隔Δnは、メニュー項目画像nの下端とメニュー項目画像n+1の上端との間の距離である(n=1〜7)。また、メニュー項目画像1〜8のそれぞれに関連づけて、表示位置の座標X1〜X8がメモリ18に記憶される。座標Xnは、
図8及び
図9に示すように、タッチパネル12の画面の上端からメニュー項目画像nの上端までの距離を示している。なお、座標Xnが負の場合には、当該座標は表示範囲52の外である(n=1〜8)。
【0021】
図11及び
図12は、メニュー50を表示するためのプログラムの処理を示している。
図11に示すように、このプログラムでは、まず端処理が必要か否かを判断する(S101)。端処理は、
図12のフロー図により示される処理であり、メニュー50を下方向に移動させる操作によりメニュー項目画像1の上端が位置Aにまできた後、或いは、メニュー50を上方向に移動させる操作によりメニュー項目画像8の下端が位置Bにまできた後に、それぞれ実行される処理である。具体的には、(1)メニュー項目画像1の上端が位置Aにある状態で、下方向のドラッグ操作が行われた場合、(2)メニュー項目画像8の下端が位置Bにある状態で、上方向のドラッグ操作が行われた場合、(3)下方向のフリック操作に応じた自動処理によりメニュー項目画像1の上端が位置Aにきた場合、(4)上方向のフリック操作に応じた自動処理によりメニュー項目画像8の下端が位置Bにきた場合、(5)メニュー項目画像1の上端が位置Aにある状態であり、且つメニュー項目画像1とメニュー項目画像2の現在の間隔Δ1が基準間隔Δよりも大きい場合、(6)メニュー項目画像8の下端が位置Bにある状態であり、且つメニュー項目画像8とメニュー項目画像7の現在の間隔Δ7が基準間隔Δよりも大きい場合に、端処理が必要と判断する。
【0022】
ここで、メニュー項目画像1の上端が位置Aにあるか否か、メニュー項目画像8の下端が位置Bの位置にあるか否か、は、
図10のテーブルの座標X1及びX8より判断することができる。また、ドラッグ操作が行われたか否か、及びドラッグ操作の方向は、タッチパッドインタフェース22からの出力に基づいて判断することができる。さらに、このプログラムでは、メモリ18にフリック操作に応じた自動処理のスピードを記憶させており、この自動処理スピードが0より大きい場合には、フリック操作により下方向の自動処理がなされている最中(自動処理中)と判断できる。また、この自動処理スピードが0より小さい場合には、フリック操作により上方向の自動処理がなされている最中(自動処理中)と判断できる。一方、自動処理スピードが0の場合には、自動処理がなされていないと判断できる。
【0023】
端処理が必要でない場合、次にタッチパッドインタフェース22からの出力に基づいて、タッチパッド12bにタッチ中であるか否かを判断する(S103)。タッチ中であれば、自動処理スピードを0に設定するとともに(S104)、直前に検出したタッチ位置と今回検出したタッチ位置との上下方向の距離、すなわちドラッグ距離を取得し、このドラッグ距離だけメニュー50を移動させる(S105)。具体的には、タッチ位置が上方向に移動していれば、
図10に示すテーブルに含まれている各座標Xnをドラッグ距離だけ減算する。また、タッチ位置が下方向に移動していれば、各座標Xnにドラッグ距離を加算する。そして、更新されたテーブルに従って、メニュー項目画像1〜8をFPD12aに表示させ、S101の処理に戻る。
【0024】
S103においてタッチ中でないと判断されると、次にフリックがなされたか否かを判断する(S106)。例えば、直前に検出したタッチ位置とさらにその前に検出したタッチ位置との上下方向の距離、すなわち直前のドラッグ距離(スライドスピード)が所定距離以上であり、且つ今回はタッチ位置を検出していない場合に、フリックがなされたと判断する。フリックがなされたと判断すると、直前のドラッグ距離に応じて自動処理スピードを設定する(S107)。具体的には、ドラッグ距離が長ければ長いほど、自動処理スピードを大きく設定する。また、下方向にドラッグされていれば、自動処理スピードを正の値とし、上方向にドラッグされていれば、自動処理スピードを負の値とする。
【0025】
その後、自動処理スピードの値を、
図10のテーブルに含まれる座標Xnに加算し、更新後のテーブルに従ってメニュー項目画像1〜8をFPD12aに表示させる(S109)。さらに、自動処理スピードの値を0に近づける(S110)。例えば所定値ずつ自動処理スピードを0に近づけてよい。S110の処理により自動処理スピードが0となれば、自動処理は終了する。その後、S101の処理に戻る。
【0026】
S106においてフリックがなされていないと判断されると、現在自動処理中であるか否かを判断する(S108)。具体的には、自動処理スピードが0であれば、自動処理中でないと判断し、それ以外には自動処理中と判断する。自動処理中でなければ、そのままS101の処理に戻り、自動処理中であれば、S109の処理に進む。
【0027】
S101で端処理が必要と判断されれば、
図12に示される端処理が実行される。この処理では、まずタッチ中か否かを判断する(S1021)。タッチ中であれば、直前のタッチ位置と今回のタッチ位置との差、すなわちドラッグ距離を取得する(S1022)。さらに、今回のタッチ位置に対応するメニュー項目画像を特定する(S1023)。例えば、今回のタッチ位置から、メニュー項目画像1〜8の中心位置への上下方向の距離を算出し、その距離が一番小さなものを、今回のタッチ位置に対応するメニュー項目画像としてよい。そして、特定されたメニュー項目画像が、メニュー項目画像1又はメニュー項目画像8のいずれかであるか否かを判断する(S1024)。特定されたメニュー項目画像が、メニュー項目画像1又はメニュー項目画像8であれば、S1022で取得されたドラッグ距離に応じて、
図10のテーブルに含まれる間隔Δ1〜Δ7を更新し、さらに座標X1〜X8も併せて更新する(S1028)。具体的には、メニュー項目画像1の上端が位置Aにあり、下方向にドラッグしていれば、間隔Δ1〜Δ7をドラッグ距離に比例した量だけ広げる。上方向にドラッグしていれば、間隔Δ1〜Δ7をドラッグ距離に比例した量だけ狭める。Δ1〜Δ7を広げたり狭めたりする量は、等しくしてよい。その後、座標X1については値をそのままに、座標X2〜X8については、座標X1及び間隔Δ1〜Δ7に従って更新する。つまり、メニュー項目画像1の上端が位置Aとなり、その他のメニュー項目画像2〜8は、間隔Δ1〜Δ7で並ぶようにする。
【0028】
同様に、メニュー項目画像8の下端が位置Bにあり、上方向にドラッグしていれば、間隔Δ1〜Δ7をドラッグ距離に比例した量だけ広げる。下方向にドラッグしていれば、間隔Δ1〜Δ7をドラッグ距離に比例した量だけ狭める。ここでも、Δ1〜Δ7を広げたり狭めたりする量は、等しくしてよい。その後、座標X8については値をそのままに、座標X2〜X8については、座標X8及び間隔Δ1〜Δ7に従って更新する。つまり、メニュー項目画像8の下端が位置Bとなり、その他のメニュー項目画像1〜7は、間隔Δ1〜Δ7で並ぶようにする。
【0029】
一方、S1024において、特定されたメニュー項目画像が、メニュー項目画像1でもメニュー項目画像8でもないと判断されれば、次に、特定されたメニュー項目画像を移動させる(S1025)。すなわち、S1023で特定されたメニュー項目画像についての座標Xnを、S1023で取得されたドラッグ距離だけ移動させる。このとき、下方向にドラッグしていれば、座標Xnにドラッグ距離を加算し、上方向にドラッグしていれば、座標Xnからドラッグ距離を減算する。
【0030】
さらに、S1023で特定されたメニュー項目画像と、メニュー項目画像1又はメニュー項目画像8と、の間で、メニュー項目画像を等間隔に配置する(S1026)。すなわち、メニュー項目画像1の上端が位置Aにある場合、S1023で特定されたメニュー項目画像とメニュー項目画像1との間で、メニュー項目画像が等間隔となるよう、
図10に示されるテーブルの間隔Δn及び座標Xnを更新する。また、メニュー項目画像8の下端が位置Bにある場合、S1023で特定されたメニュー項目画像とメニュー項目画像8との間で、メニュー項目画像が等間隔となるよう、
図10に示されるテーブルの間隔Δn及び座標Xnを更新する。
【0031】
なお、S1026では、S1023で特定されたメニュー項目画像と、メニュー項目画像1又はメニュー項目画像8と、の間で、メニュー項目画像の間隔を徐々に変えるようにしてもよい。例えば、
図5に関連して既に説明したように、S1023で特定されたメニュー項目画像から遠いほど、メニュー項目画像の間隔が狭くなるようにしてもよい。
【0032】
さらに、S1026で更新された間隔Δn及び座標Xnに従って、S1026では更新されていない、残りの座標Xnを更新する(S1027)。つまり、メニュー項目画像1の上端が位置Aにある場合、S1023で特定されたメニュー項目画像よりも下側のメニュー項目画像が、
図10のテーブルに記録された間隔Δnで並ぶようにする。同様に、メニュー項目画像8の下端が位置Bにある場合、S1023で特定されたメニュー項目画像よりも上側のメニュー項目画像が、
図10のテーブルに記録された間隔Δnで並ぶようにする。その後、以上のようにして更新されたテーブルに従って、メニュー項目画像1〜8をFPD12aにより表示させる(S1029)。
【0033】
S1021において、タッチパッド12bがタッチされていないと判断されると、次に自動処理中であるか否かを判断する(S1036)。自動処理中であれば、現在の自動処理スピードの大きさに応じて間隔Δ1〜Δ7を広げる(S1030)。例えば、自動処理スピードの絶対値に比例した値を間隔Δ1〜Δ7に加算してもよい。なお、間隔Δ1〜Δ7を等しく広げてもよいし、広げる程度を異ならせてもよい。例えば、メニュー項目画像1の上端が位置Aにある場合、該メニュー項目画像1に近い間隔(つまりΔ1)ほど大きく広げてよい。つまり、Δ1>Δ2>Δ3…としてよい。また、メニュー項目画像8の下端が位置Bにある場合、該メニュー項目画像8に近い間隔ほど大きく広げてよい。つまり、Δ8>Δ7>Δ6…としてよい。逆に、メニュー項目画像1の上端が位置Aにある場合、該メニュー項目画像1から遠い間隔ほど大きく広げてよい。つまり、Δ8>Δ7>Δ6…としてよい。また、メニュー項目画像8の下端が位置Bにある場合、該メニュー項目画像8から遠い間隔ほど大きく広げてよい。つまり、Δ1>Δ2>Δ3…としてよい。そして、S1030により更新された間隔Δ1〜Δ7に従って、座標X2〜X8を更新する(S1031)。こうして、メニュー項目画像1を同じ位置に留めつつ、メニュー項目画像1〜8が、更新された間隔Δ1〜Δ7で並ぶようにする。その後、以上のようにして更新されたテーブルに従って、メニュー項目画像1〜8をFPD12aにより表示させる(S1032)。さらに、自動処理スピードを0に近づける(S1033)。例えば所定値ずつ自動処理スピードを0に近づけてよい。S1033の処理により自動処理スピードが0となれば、自動処理は終了する。
【0034】
また、S1025において自動処理中でないと判断されると、間隔Δ1〜Δ7を元の基準間隔Δに近づける。例えば、所定値ずつ基準間隔Δに近づけてよい。さらに、更新された間隔Δ1〜Δ7でメニュー項目画像1〜8が並ぶよう、座標X1〜X8を更新する(S1034)。具体的には、メニュー項目画像1の上端が位置Aにある場合、座標X1はそのままにして、更新された間隔Δ1〜Δ7でメニュー項目画像1〜8が並ぶよう、座標X2〜X8を更新する。また、メニュー項目画像8の下端が位置Bにある場合、座標X8はそのままにして、更新された間隔Δ1〜Δ7でメニュー項目画像1〜8が並ぶよう、座標X1〜X7を更新する。その後、以上のようにして更新されたテーブルに従って、メニュー項目画像1〜8をFPD12aにより表示させる(S1035)。
【0035】
以上説明した可搬情報処理装置10によれば、下方向のフリック又はドラッグによりメニュー項目画像1の上端が位置Aにまでくると、メニュー項目画像1は下方向にそれ以上移動せず、代わりにメニュー項目画像1とメニュー項目画像2の間隔が広がる。また、上方向のフリック又はドラッグによりメニュー項目画像8の下端が位置Bにまでくると、メニュー項目画像8は上方向にそれ以上移動せず、代わりにメニュー項目画像8とメニュー項目画像8の間隔が広がる。こうして、メニュー50が下限又は上限まで移動していること、つまりタッチパネル12に上端のメニュー項目画像1又は下端のメニュー項目画像8が所定位置に表示されていることを、分かりやすくユーザに伝えることができる。
【0036】
なお、本発明は上記実施形態に限定されるものではない。例えば、
図9乃至
図12に示される処理は一例に過ぎず、他の変形された処理により本発明に係るユーザインタフェースを実現してよいのはもちろんである。