我在Blackberry中定義了一個BitmapButtonField。但默認的灰色背景沒有去。藍色的onFocus邊框? 如何改變他們在BB 4.5如何在黑莓4.5中設置字段的背景?
0
A
回答
2
你好,這是位圖按鈕和背景顏色紅
manager=new Field(Field.FOCUSABLE){
protected void onFocus(int direction) {
super.onFocus(direction);
flag1=true;
invalidate();
}
protected void onUnfocus() {
flag1=false;
invalidate();
}
protected void layout(int width, int height) {
setExtent(image.getWidth(),image.getHeight());
}
protected void paint(Graphics graphics) {
if(flag1){
graphics.setBackgroundColor(Color.RED);
graphics.clear();
graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image_hover,0,0);
}else{
graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image,0,0);
}
}
protected boolean navigationClick(int status, int time) {
fieldChangeNotify(1);
return true;
}
};
manager.setChangeListener(this);
add(manager);
輸出如下圖像 這是背景圖像和默認背景色
manager1=new Field(Field.FOCUSABLE){
protected void onFocus(int direction) {
super.onFocus(direction);
flag2=true;
invalidate();
}
protected void onUnfocus() {
button=image;
flag2=false;
invalidate();
}
protected void layout(int width, int height) {
setExtent(image.getWidth(),image.getHeight());
}
protected void paint(Graphics graphics) {
if(flag2)
graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image_hover,0,0);
else
graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image,0,0);
}
protected boolean navigationClick(int status, int time) {
fieldChangeNotify(1);
return true;
}
};
manager1.setChangeListener(this);
add(manager1);
出把如下
全功能類以下爲更好地理解
import net.rim.device.api.system.Bitmap;
import net.rim.device.api.ui.Color;
import net.rim.device.api.ui.Field;
import net.rim.device.api.ui.FieldChangeListener;
import net.rim.device.api.ui.Graphics;
import net.rim.device.api.ui.UiApplication;
import net.rim.device.api.ui.component.Dialog;
import net.rim.device.api.ui.container.MainScreen;
public class StartUp extends UiApplication{
public static void main(String[] args) {
StartUp up=new StartUp();
up.enterEventDispatcher();
}
public StartUp()
{
pushScreen(new Demoscreen());
}
class Demoscreen extends MainScreen implements FieldChangeListener
{
Bitmap image,image_hover;
boolean flag1,flag2;
Field manager=null,manager1=null;
public Demoscreen() {
image=Bitmap.getBitmapResource("Download_48x48.png");
image_hover=Bitmap.getBitmapResource("Download_48x48.png");
manager=new Field(Field.FOCUSABLE){
protected void onFocus(int direction) {
super.onFocus(direction);
flag1=true;
invalidate();
}
protected void onUnfocus() {
flag1=false;
invalidate();
}
protected void layout(int width, int height) {
setExtent(image.getWidth(),image.getHeight());
}
protected void paint(Graphics graphics) {
if(flag1){
graphics.setBackgroundColor(Color.RED);
graphics.clear();
graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image_hover,0,0);
}else{
graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image,0,0);
}
}
protected boolean navigationClick(int status, int time) {
fieldChangeNotify(1);
return true;
}
};
manager.setChangeListener(this);
add(manager);
manager1=new Field(Field.FOCUSABLE){
protected void onFocus(int direction) {
super.onFocus(direction);
flag2=true;
invalidate();
}
protected void onUnfocus() {
flag2=false;
invalidate();
}
protected void layout(int width, int height) {
setExtent(image.getWidth(),image.getHeight());
}
protected void paint(Graphics graphics) {
if(flag2)
graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image_hover,0,0);
else
graphics.drawBitmap(0, 0, image.getWidth(),image.getHeight(), image,0,0);
}
protected boolean navigationClick(int status, int time) {
fieldChangeNotify(1);
return true;
}
};
manager1.setChangeListener(this);
add(manager1);
}
public void fieldChanged(Field field, int context) {
if(field==manager)
{
displayDialog("I am first field");
}else if(field==manager1)
{
displayDialog("I am second field");
}
}
public void displayDialog(final String message)
{
UiApplication.getUiApplication().invokeLater(new Runnable() {
public void run() {
Dialog.inform(message);
}
});
}
}
}
欲瞭解更多詳情,請訪問以下鏈接,背景Background logic for 4.5 OS
1
檢查下列定製按鈕字段鏈接:
Implement advanced buttons, fields, and managers.
User Defined Buttons - Create a Custom Button From an Image
Blackberry Custom Button Field
How to create a Custom Button Field in Blackberry
通常重寫applyTheme(..)
(空實現)將刪除字段的默認樣式。此外,我們需要覆蓋paint(..)
,paintBackground(..)
,drawFocus(..)
,並根據當前焦點狀態更改其實施。以下是擴展Field以製作自定義按鈕字段的情況的代碼片段。
private final Bitmap focusedBitMap = Bitmap.getBitmapResource("focused.png");
private final Bitmap unfocusedBitmap = Bitmap.getBitmapResource("unfocused.png");
protected void paint(Graphics graphics) {
// paint background
graphics.setBackgroundColor(isFocus() ? Color.RED : Color.GREEN);
graphics.clear();
// draw button image
Bitmap myBitmap = isFocus() ? focusedBitMap : unfocusedBitmap;
if (myBitmap != null) {
// image position calculation
int imageX = 0;
int imageY = 0;
graphics.drawBitmap(imageX, imageY,
myBitmap.getWidth(), myBitmap.getHeight(),
myBitmap, 0, 0);
}
}
protected void drawFocus(Graphics graphics, boolean on) {
}
public boolean isFocusable() {
return true;
}
相關問題
- 1. 如何爲黑莓設置背景
- 2. 黑莓 - 設置字段背景圖像大小適合
- 3. 如何設置背景圖片在黑莓7.1
- 4. 如何讓黑莓背景變黑?
- 5. 如何設置默認的datetimepicker黑莓的背景
- 6. 如何設置按鈕的圖像背景黑莓
- 7. 如何將圖像設置爲黑莓背景
- 8. 如何更改黑莓中對象選擇字段的背景顏色?
- 9. 有沒有辦法設置黑莓的背景顏色?
- 10. 黑莓 - 在屏幕上設置字段的位置?
- 11. 黑莓4.5 - 如何點擊.jpg圖像?
- 12. 如何在黑莓中將字體設置爲LabelField文本?
- 13. 背景黑莓UI應用程序
- 14. 背景圖像黑莓圖像
- 15. 黑莓背景聽衆線程
- 16. 爲片段設置背景?
- 17. 在黑莓中選中時更改按鈕的背景顏色
- 18. drawListRow只呼籲集中行(黑莓4.5)
- 19. 如何設置黑莓屏幕
- 20. 設置黑莓標籤字段的寬度
- 21. 使用Java設置黑莓按鈕字段的顏色
- 22. 將Flash Builder 4.5移動應用程序VGroup背景顏色設置爲黑色
- 23. 如何加載黑莓背景上的東西?
- 24. 如何在StackPanel中設置背景
- 25. 在我的黑莓應用程序中使用背景圖片
- 26. 黑莓隱藏字段
- 27. 黑莓字段對齊
- 28. 什麼字段類型是黑莓手機上的設置計時器字段?
- 29. 如何設置焦點位圖字段,藍色是不可見的,黑莓
- 30. 隱藏黑莓中的字段
這是您的自定義按鈕? – BBdev 2012-01-05 03:53:39
您是否使用任何圖像到該位圖? – alishaik786 2012-01-05 04:40:50
雅作品!謝謝!! – 2012-01-05 19:56:20