2

概要
リストフィールドクラスを使用して、一連の情報を垂直方向に表示しています。そのリストフィールドの各行は、画面の高さの2/5を占めます。

そのため、次のアイテムにスクロールするとき(特に、画面の高さの制約によって部分的に隠されているアイテムを表示するとき)、スクロール/フォーカスアクション全体が非常にジャンプします。

スクロール/フォーカスアクション間のスムーズなスクロールを実装することで、このジャンプを修正したいと思います。これはListFieldクラスで可能ですか?

以下の例
は、目前の問題を表示するスクリーンショットです。

代替テキスト
(出典:perkmobile.com

ユーザーがListFieldTHREE行までスクロールダウンすると、この行は非常にジャンプして表示されるように「スクロール」され、スムーズなスクロールは行われません。行の高さを低くするとこの問題が軽減されることはわかっていますが、そのようにしたくはありません。

主な質問
ListFieldでスムーズなスクロールを行うにはどうすればよいですか?

4

3 に答える 3

3

私の知る限り、これを行う公式の API の方法はありませんが、NullField(Field.FOCUSABLE) を巧みに使用することでおそらくごまかすことができます。これは、強制フォーカス動作を実装するカスタム BlackBerry UI の数です。

1 つのアプローチは、フォーカス可能な NullFields をリスト項目自体の可視コンテンツとインターレースするクラスから各「リスト項目」を派生させることです。リスト項目間の自然な分割、およびリスト項目の内容の目に見える位置を変更しないという副次的な利点があります。

于 2009-07-15T17:34:07.520 に答える
1

ユーザーがトラックボールを 1「クリック」して下にスクロールすると、次の項目が強調表示されますが、すぐにスクロール ジャンプする代わりに、新しい項目が表示されるようにスムーズにスクロールするという動作が必要であると仮定します (Google の Gmail アプリのように)。 BlackBerry)、独自のコンポーネントを作成する必要があります。

基本的な考え方は、VerticalFieldManager をサブクラス化してから、スクロール (moveFocus メソッドをキーオフ) すると、別の Thread で垂直位置変数を更新し、マネージャーを複数回無効にすることです。

考えてみると、ユーザーイベントからアニメーションを駆動しているため、スレッドが必要です。滑らかなスクロールは、それをトリガーしたイベントよりも長く続くため、実際には BlackBerry のアニメーションです。

私は詳細について少し漠然としており、これを行うのは本当に簡単なことではないので、これが少し役立つことを願っています.

于 2009-07-16T14:43:52.890 に答える
0

リストフィールドの描画方法をオーバーライドしたり、独自のラッパーを作成したりしない限り、常にこの問題が発生します。これは、スクロール時に各行が常に表示されるためです。代わりに labelfield を使用してみてください。

于 2009-07-15T17:24:43.593 に答える