I want to create a tool bar of exact look and feel for my blackberry project. Any help is greatly appreciated. Please note I cannot use ToolBarManager. My project should support all devices after OS 5.0
Thanks
I want to create a tool bar of exact look and feel for my blackberry project. Any help is greatly appreciated. Please note I cannot use ToolBarManager. My project should support all devices after OS 5.0
Thanks
This is a sample code that how to create Tabs in blackberry. I had total 3 screens after statUp(which extends UiApplication) class
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);
}
}
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();
}
}
}
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;
Put setStatus(bottomPanel);
in the constructor of the LoadingScreen
.
© 2022 - 2024 — McMap. All rights reserved.