Bitmap
を作成する前に水平方向に伸ばすことが可能でBitmapField
あり、それで問題が解決します。ただし、ストレッチBitmap
してタイトルとして使用すると、画面の回転をサポートするデバイス(Storm、Torchシリーズなど)で問題が発生します。その場合、2つの引き伸ばされBitmap
たインスタンスを維持する必要があります。1つはポートレートモード用で、もう1つはランドスケープモード用です。Bitmap
また、向きに応じて適切に設定するための追加のコードを作成する必要があります。それをしたくない場合は、次の2つのアプローチを確認してください。
CustomBitmapFieldインスタンスの使用
Bitmap
水平方向に伸ばすことができるCustomBitmapFieldを使用できます。実装を確認してください。
class MyScreen extends MainScreen {
public MyScreen() {
Bitmap bm = Bitmap.getBitmapResource("uperlogo.png");
setTitle(new CustomBitmapField(bm));
}
class CustomBitmapField extends Field {
private Bitmap bmOriginal;
private Bitmap bm;
private int bmHeight;
public CustomBitmapField(Bitmap bm) {
this.bmOriginal = bm;
this.bmHeight = bm.getHeight();
}
protected void layout(int width, int height) {
bm = new Bitmap(width, bmHeight);
bmOriginal.scaleInto(bm, Bitmap.FILTER_BILINEAR);
setExtent(width, bmHeight);
}
protected void paint(Graphics graphics) {
graphics.drawBitmap(0, 0, bm.getWidth(), bmHeight, bm, 0, 0);
}
}
}
バックグラウンドインスタンスの使用
Background
オブジェクトは問題を簡単に解決できます。Background
インスタンスが、そのインスタンスで使用可能なすべての幅を使用するように設定できる場合、画面の回転の場合、インスタンスHorizontalFieldManager
はそのサイズと背景の描画を処理します。そして、Background
インスタンス自体が、提供されたのストレッチを処理しBitmap
ます。次のコードを確認してください。
class MyScreen extends MainScreen {
public MyScreen() {
setTitle(getMyTitle());
}
private Field getMyTitle() {
// Logo.
Bitmap bm = Bitmap.getBitmapResource("uperlogo.png");
// Create a manager that contains only a dummy field that doesn't
// paint anything and has same height as the logo. Background of the
// manager will serve as the title.
HorizontalFieldManager hfm = new HorizontalFieldManager(USE_ALL_WIDTH);
Background bg = BackgroundFactory.createBitmapBackground(bm, Background.POSITION_X_LEFT, Background.POSITION_Y_TOP, Background.REPEAT_SCALE_TO_FIT);
hfm.setBackground(bg);
hfm.add(new DummyField(bm.getHeight()));
return hfm;
}
// Implementation of a dummy field
class DummyField extends Field {
private int logoHeight;
public DummyField(int height) {
logoHeight = height;
}
protected void layout(int width, int height) {
setExtent(1, logoHeight);
}
protected void paint(Graphics graphics) {
}
}
}