Tab bar in blackberry without ToolBarManager

前端 未结 2 757
死守一世寂寞
死守一世寂寞 2020-11-30 08:21

\"enter

I want to create a tool bar of exact look and feel for my blackberry project.

相关标签:
2条回答
  • 2020-11-30 08:50

    Put setStatus(bottomPanel); in the constructor of the LoadingScreen.

    0 讨论(0)
  • 2020-11-30 08:59

    This is a sample code that how to create Tabs in blackberry. I had total 3 screens after statUp(which extends UiApplication) class

    1. LoadingScreen.java

      public class LoadingScreen extends MainScreen
      {   
      int current_index=0;
      BottomPanel bottomPanel;
      public LoadingScreen(int current_index)
      {   
         this.current_index=current_index;
         bottomPanel=new BottomPanel(current_index);
      }
      
      public  void createGUI() 
      {       
      setTitle("Loading Screen");
      
      VerticalFieldManager vertical=new VerticalFieldManager(USE_ALL_WIDTH)
      {
          protected void sublayout(int maxWidth, int maxHeight) 
          {               
              super.sublayout(Display.getWidth(), 150);
              setExtent(Display.getWidth(), 150);
          }
      };
      vertical.setBackground(BackgroundFactory.createSolidBackground(Color.GREEN));
      ButtonField button=new ButtonField("Click");
      vertical.add(button);       
      add(vertical);
      
      setStatus(bottomPanel);     
      }
      }
      
    2. BottomPanel.java

      public class BottomPanel extends VerticalFieldManager implements FieldChangeListener 
      {
         Bitmap news_bit=Bitmap.getBitmapResource("news.png");//these images are cutting according to device requirement;
         Bitmap news_bit_hover=Bitmap.getBitmapResource("news_h.png");
         Bitmap settings_bit=Bitmap.getBitmapResource("settings.png");
         Bitmap settings_bit_hover=Bitmap.getBitmapResource("settings_h.png");
         Bitmap about_bit=Bitmap.getBitmapResource("about.png");
         Bitmap about_bit_hover=Bitmap.getBitmapResource("about_h.png");
         PictureBackgroundButtonField news_pic,settings_pic,about_pic;
         HorizontalFieldManager hr;
         int current_index=0;
         public BottomPanel(int current_index)
         {        
         super(FOCUSABLE);
         this.current_index=current_index;
        VerticalFieldManager ver=new VerticalFieldManager(USE_ALL_WIDTH|USE_ALL_HEIGHT)
        {         
          protected void sublayout(int width, int height) 
          {
              super.sublayout(width, news_bit.getHeight());
              setExtent(width, news_bit.getHeight());
          }
      };
      hr=new HorizontalFieldManager(FIELD_HCENTER);
      if(current_index==1)
      {
          news_pic=new PictureBackgroundButtonField(news_bit.getWidth(),news_bit.getHeight(), Field.NON_FOCUSABLE|Field.FIELD_VCENTER, news_bit_hover, news_bit_hover);
      }
      else
      {
          news_pic=new PictureBackgroundButtonField(news_bit.getWidth(),news_bit.getHeight(), Field.FOCUSABLE|Field.FIELD_VCENTER, news_bit, news_bit_hover);
      }
      news_pic.setChangeListener(this);
      hr.add(news_pic);
      
      if(current_index==2)
      {
          settings_pic=new PictureBackgroundButtonField(settings_bit.getWidth(),settings_bit.getHeight(), Field.NON_FOCUSABLE|Field.FIELD_VCENTER, settings_bit_hover, settings_bit_hover);
      }
      else
      {
          settings_pic=new PictureBackgroundButtonField(settings_bit.getWidth(),settings_bit.getHeight(), Field.FOCUSABLE|Field.FIELD_VCENTER, settings_bit, settings_bit_hover);
      }
      settings_pic.setChangeListener(this);
      hr.add(settings_pic);
      
      if(current_index==3)
      {
          about_pic=new PictureBackgroundButtonField(about_bit.getWidth(),about_bit.getHeight(),Field.NON_FOCUSABLE|Field.FIELD_VCENTER, about_bit_hover, about_bit_hover);
      }
      else
      {
          about_pic=new PictureBackgroundButtonField(about_bit.getWidth(),about_bit.getHeight(), Field.FOCUSABLE|Field.FIELD_VCENTER, about_bit, about_bit_hover);
      }
      about_pic.setChangeListener(this);
      hr.add(about_pic);
      
      ver.add(hr);
      add(ver);
      }
      
      public void fieldChanged(Field field, int context) 
      {           
      if(field==news_pic)
      {               
          LoadingScreen loadingScreen=new LoadingScreen(1);
          UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen());
          UiApplication.getUiApplication().pushScreen(loadingScreen);
          loadingScreen.createGUI();
      }
      else if(field==settings_pic)
      {
          LoadingScreen loadingScreen=new LoadingScreen(2);
          UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen());
          UiApplication.getUiApplication().pushScreen(loadingScreen);
          loadingScreen.createGUI();
      }
      else if(field==about_pic)
      {
          LoadingScreen loadingScreen=new LoadingScreen(3);
          UiApplication.getUiApplication().popScreen(UiApplication.getUiApplication().getActiveScreen());
          UiApplication.getUiApplication().pushScreen(loadingScreen);
          loadingScreen.createGUI();
      }       
      }
      }   
      
    3. PictureBackgroundButtonField.java

      public class PictureBackgroundButtonField extends Field 
      {       
          private String _label;
          private int _labelHeight;
          private int _labelWidth;
          private Font _font;
      
          private Bitmap _currentPicture;
          private Bitmap _onPicture ;
          private Bitmap _offPicture ;
          public PictureBackgroundButtonField(int width,int height, long style, Bitmap picture, Bitmap selectedPic) 
          {
              super(style);
      
             _font = getFont();
             _label = "";
            _labelHeight = height;
            _labelWidth = width;
            _currentPicture = picture;
            _onPicture = selectedPic;
            _offPicture = picture;        
         }
         public int getPreferredHeight() 
         {
             return _labelHeight;
         }
         public int getPreferredWidth() 
         {
             return _labelWidth;
         }
         protected void onFocus(int direction) 
         {
             _currentPicture = _onPicture;
             invalidate();
         }
         protected void onUnfocus() 
         {
              _currentPicture = _offPicture;
              invalidate();
         }
         protected void drawFocus(Graphics graphics, boolean on) 
         {
              // Do nothing
         }
         protected void layout(int width, int height) 
         {
             setExtent( getPreferredWidth(), getPreferredHeight());
         }
         protected void paint(Graphics graphics) 
         {            
                 graphics.drawBitmap(0, 0, getPreferredWidth(), getPreferredHeight(), _currentPicture, 0, 0);     
                 graphics.setFont(_font);
                 graphics.drawText(_label, 4, 2, 
          (int)( getStyle() & DrawStyle.ELLIPSIS | DrawStyle.HALIGN_MASK ),
          getWidth() - 6 );
        }
        protected boolean navigationClick(int status, int time) 
        {
               fieldChangeNotify(1);
               return true;
        }    
      }
      

    Try this code and see the difference;

    0 讨论(0)
提交回复
热议问题