0

如何在屏幕底部水平添加图像。如果这些图像位于屏幕的水平中心,则将这些图像从右到左滑动到起点。我应该使用什么。

这是该滚动字段水平字段管理器的链接。 http://appworld.blackberry.com/webstore/content/screenshots/56307/?lang=en 请单击此链接,在该链接中,您将在底部看到该图像中的图像,显​​示具有多个图像的水平字段管理器和从其他图像中查找的焦点图像。

4

1 回答 1

1

要在屏幕底部水平添加图像,您需要一个VerticalFieldManager显示在屏幕底部的自定义。您可以实现sublayout经理的这种压倒一切的方法。
在此 VerticalFieldManager 中,您添加一个HorizontalFieldManager包含所有图像的。

为了使图像从右向左滑动,我创建了一个自定义HorizontalFieldManager,其中添加的字段从左向右滚动。

public class CustomHorizontalField extends HorizontalFieldManager{

public boolean enableMoving = false;
private int focusOnIndex = 0;   

public void focusChangeNotify(int arg0) {

    super.focusChangeNotify(arg0);

    if(enableMoving)
    {
        int newFocusIndex = getFieldWithFocusIndex();
        if(newFocusIndex != focusOnIndex)
        {
            if( (newFocusIndex - focusOnIndex )> 0 )
            {
                startRotation(0, getFieldCount()-1);        
            }else
            {
                startRotation(getFieldCount()-1, 0);
            }
        }

    }else
    {
        focusOnIndex = getFieldWithFocusIndex();
    }

}
public int getPreferredWidth() {
    return Display.getWidth();
}
public int getPreferredHeight() {
    return super.getPreferredHeight();
}
protected void sublayout(int maxWidth, int maxHeight) {
    super.sublayout(Display.getWidth(), getPreferredHeight());
    setExtent(Display.getWidth(), getPreferredHeight());
}

private void startRotation(int from,int to)
{
    Field field = getField(from);
    delete(field);
    insert(field, to);
}   
}  

将您的图像添加到此CustomHorizontalField并将此管理器添加到VerticalFieldManager屏幕底部显示的自定义中。

编辑
这里是创建包含位图图像的自定义按钮的代码。
您可以将图像设置为看起来像位图字段的按钮,您可以setChangeListener为按钮设置并添加代码以在覆盖方法中单击图像时执行操作fieldChanged(Field field, int context)

public class CustomBitmapButtomField extends ButtonField{

   private  Bitmap activeBtn = null;
   private  Bitmap normalBtn = null;
   private  Bitmap focusBtn = null;

   private int btnHeight = 0;
   private int btnWidth = 0;


   public CustomBitmapButtomField(Bitmap normal,Bitmap focus,Bitmap active) {
   activeBtn = active;
   normalBtn = normal ;
   focusBtn = focus;
   btnWidth = normalBtn.getWidth();
   btnHeight = normalBtn.getWidth();
   setMargin(0, 0, 0, 0);
   setPadding(0,0,0,0);
   setBorder(BorderFactory.createSimpleBorder(new XYEdges(0, 0, 0, 0)));
   setBorder(VISUAL_STATE_ACTIVE, BorderFactory.createSimpleBorder(new XYEdges(0, 0, 0, 0)));
   setBackground(BackgroundFactory.createSolidBackground(Color.WHITE));   
   }

   protected void paint(Graphics graphics) {
     Bitmap bitmap = null;
     switch (getVisualState()) {
    case VISUAL_STATE_NORMAL:
        bitmap = normalBtn;
        break;
    case VISUAL_STATE_FOCUS:
        bitmap = focusBtn;
        break;
    case VISUAL_STATE_ACTIVE:
        bitmap = activeBtn;
        break;
    default:
        bitmap = normalBtn;
        break;
    }
    graphics.drawBitmap(0, 0, bitmap.getWidth(), bitmap.getHeight(), bitmap, 0, 0);
}

   public int getPreferredWidth() {
    return btnWidth;
}
   public int getPreferredHeight() {
    return btnHeight;
}
   protected void layout(int width, int height) {
    setExtent(btnHeight,btnHeight);
}
 }
于 2012-04-13T09:42:37.260 回答