你好老鄉BB程序員,黑莓6:長按顯示菜單,運行在短按一下1個行動
如果你看一下本機通訊錄中的黑莓6的手機上(通訊錄)應用與觸摸屏 - 它有一個很自然的行爲:
- 在短輕拍正在執行默認的動作 - 查看所選的地址簿條目
- 在長觸摸並按住菜單與幾個動作顯示:
我試圖創建一個ListField和類似(直觀)行爲自己的應用程序:在短輕拍運行默認的行動,並在幾個次要的行動顯示在屏幕中間的菜單更長的觸摸。
我已經搜查了很多,可惜只設法創建SOFAR正好相反的行爲測試的應用程序:
我聽一個TouchGesture.HOVER和運行editMenu.run()。而對於短按自動菜單(我還沒有找到,是什麼使它出現,在MainScreen/Screen中有一些方法?)。我試着運行菜單(0),但菜單出現在右上角而不是屏幕中心。
下面是我非常簡單的測試代碼MyList.java,請幫我解決這個問題:
package mypackage;
import java.util.*;
import net.rim.device.api.collection.*;
import net.rim.device.api.collection.util.*;
import net.rim.device.api.system.*;
import net.rim.device.api.ui.*;
import net.rim.device.api.ui.component.*;
import net.rim.device.api.ui.container.*;
import net.rim.device.api.ui.decor.*;
import net.rim.device.api.util.*;
public class MyList extends UiApplication {
public static void main(String args[]) {
MyList app = new MyList();
app.enterEventDispatcher();
}
public MyList() {
pushScreen(new MyScreen());
}
}
class MyScreen extends MainScreen {
ObjectListField myList = new ObjectListField() {
protected boolean touchEvent(TouchEvent event) {
if (event.getEvent() == TouchEvent.GESTURE) {
TouchGesture gesture = event.getGesture();
if (gesture.getEvent() == TouchGesture.HOVER) {
System.err.println("XXX hover=" + gesture.getHoverCount() + ", index=" + myList.getSelectedIndex());
editMenu.run();
// onMenu(0);
return true;
}
}
return super.touchEvent(event);
}
};
private final MenuItem addMenu = new MenuItem("Add item", 0, 0) {
public void run() {
Status.show("Adding new item");
}
};
private final MenuItem editMenu = new MenuItem("Edit item", 1, 0) {
public void run() {
Status.show("Editing existing item: " + myList.getSelectedIndex());
}
};
private final MenuItem removeMenu = new MenuItem("Remove item", 2, 0) {
public void run() {
Status.show("Removing existing item: " + myList.getSelectedIndex());
}
};
public MyScreen() {
setTitle("How to display menu on long click?");
myList.set(new String[] { "Item 1", "Item 2", "Item 3", "Item 4", });
add(myList);
addMenuItem(addMenu);
addMenuItem(editMenu);
addMenuItem(removeMenu);
}
}
謝謝! 亞歷
真棒回答,謝謝 – 2011-05-09 09:25:55
我喜歡你問的方式。所以很高興回答這樣一個明確的問題。 – 2011-05-09 10:06:23