0

ブラックベリー (OS 7.0) で開発し、次のように拡張された垂直フィールド マネージャーを作成しました。

_myVFM = new MyViewManager(Manager.USE_ALL_WIDTH | Manager.USE_ALL_HEIGHT | Manager.VERTICAL_SCROLL){};

ただし、ビューをスクロールすると、仮想スクロール ビューのサイズが大きすぎます。つまり、必要以上に下にスクロールできてしまい、その理由がわかりません。

何か簡単なアイデアはありますか?そのように作成された背景画像があります:

public void paint(Graphics graphics)
{
    Bitmap backgroundBitmap = Bitmap.getBitmapResource("bg.png");
    Bitmap newBackground = new Bitmap(Display.getWidth(), Display.getHeight());
    backgroundBitmap.scaleInto(newBackground, Bitmap.FILTER_LANCZOS, Bitmap.SCALE_TO_FILL);

    graphics.clear();
    graphics.drawBitmap(0, 0, Display.getWidth(),            
             Display.getHeight(), newBackground, 0, 0);                 
    super.paint(graphics);
}

よろしくお願いします。

バロウズ

4

3 に答える 3

0
    public MyScreen() {
    super(NO_VERTICAL_SCROLL);

'NO_VERTICAL_SCROLL'スタイルパラメータを使用して、MainScreenの拡張機能の問題を修正することができました

ペイントをオーバーライドするのではなく、Vertical Field Managerのコンストラクターで背景を設定するというRupakの提案と組み合わせる( https://gist.github.com/3248319

すべてが今は良さそうです-あなたの助けに感謝します。

巣穴

于 2012-08-13T09:49:57.730 に答える
0

コンストラクターで USE_ALL_HEIGHT を使用する必要はありません。

// 代わりにこれを使用

_myVFM = new MyViewManager(Manager.USE_ALL_WIDTH | Manager.VERTICAL_SCROLL){};
于 2012-08-10T07:14:56.923 に答える
0

マネージャの高さを定義するメソッドを再定義できます

protected void setExtent(int width, int height) {
    super.setExtent(width, myHeight);
}

背景画像を繰り返さないためには、false を返す次のメソッドを再定義する必要があります。

protected boolean isScrollCopyable() {
    return false;
}

もう 1 つのコメントは、paint メソッドから画像を取得するのは悪い習慣だということです。あなたがしていることは、paint メソッドを呼び出すたびにこの画像を取得することです。一度画像を取得してから使用することをお勧めします。

于 2012-08-11T20:54:20.347 に答える