如何在屏幕底部水平添加图像。如果这些图像位于屏幕的水平中心,则将这些图像从右到左滑动到起点。我应该使用什么。
这是该滚动字段水平字段管理器的链接。 http://appworld.blackberry.com/webstore/content/screenshots/56307/?lang=en 请单击此链接,在该链接中,您将在底部看到该图像中的图像,显示具有多个图像的水平字段管理器和从其他图像中查找的焦点图像。
如何在屏幕底部水平添加图像。如果这些图像位于屏幕的水平中心,则将这些图像从右到左滑动到起点。我应该使用什么。
这是该滚动字段水平字段管理器的链接。 http://appworld.blackberry.com/webstore/content/screenshots/56307/?lang=en 请单击此链接,在该链接中,您将在底部看到该图像中的图像,显示具有多个图像的水平字段管理器和从其他图像中查找的焦点图像。
要在屏幕底部水平添加图像,您需要一个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);
}
}