@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
Button menuButton = (Button) findViewById(R.id.menuButton);
menuButton.setOnClickListener(new View.OnClickListener() {
public void onClick(View v) {
openOptionsMenu();
}
});
}
/**
* {@inheritDoc}
*/
@Override
public boolean onCreateOptionsMenu(Menu menu) {
super.onCreateOptionsMenu(menu);
menu.add("Painting");
menu.add("Photos");
menu.add("Science");
// Return true so that the menu gets displayed.
return true;
}
/**
* {@inheritDoc}
*/
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
Timer timing = new Timer();
timing.schedule(new TimerTask() {
/**
* {@inheritDoc}
*/
@Override
public void run() {
closeOptionsMenu();
}
}, 10000);
return super.onPrepareOptionsMenu(menu);
}
很多人不是很理解如何添加数据
这里是最简单的一种
public class Demonstrate extends ListActivity { private static final int ADD_ITEM = 0; private static final int REMOVE_ITEM = 1; private static final int EXIT_ITEM = 2; private ArrayAdapter<String> dataAdapter; private Dialog editorDialog = null; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); dataAdapter = new ArrayAdapter<String>(this, R.layout.item, R.id.itemName); dataAdapter.add("apple"); dataAdapter.add("orange"); dataAdapter.add("tomato"); setListAdapter(dataAdapter); } @Override public boolean onCreateOptionsMenu(Menu menu) { Resources resource = getApplicationContext().getResources(); menu.add(Menu.NONE, ADD_ITEM, ADD_ITEM, resource.getText(R.string.ADD_ITEM)).setIcon(R.drawable.add); menu.add(Menu.NONE, REMOVE_ITEM, REMOVE_ITEM, resource.getText(R.string.REMOVE_ITEM)).setIcon(R.drawable.remove); menu.add(Menu.NONE, EXIT_ITEM, EXIT_ITEM, resource.getText(R.string.EXIT_ITEM)).setIcon(R.drawable.exit); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case ADD_ITEM: showDialog(0); break; case REMOVE_ITEM: dataAdapter.remove(dataAdapter.getItem(dataAdapter.getCount() - 1)); break; case EXIT_ITEM: finish(); } return false; } @Override protected Dialog onCreateDialog(int id) { Dialog editor = editorDialog; if (editorDialog == null) { editor = createEditorDialog(); } return editor; } private Dialog createEditorDialog() { AlertDialog.Builder builder = new AlertDialog.Builder(this); builder.setTitle(R.string.addDialogTitle); View content = getLayoutInflater().inflate(R.layout.editor, (ViewGroup) findViewById(R.id.editLayout)); builder.setView(content); builder.setPositiveButton(R.string.addButtonLabel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { Dialog source = (Dialog) dialog; EditText nameField = (EditText) source .findViewById(R.id.itemField); String name = nameField.getText().toString(); EditText timesField = (EditText) source .findViewById(R.id.timesField); Integer times = Integer.valueOf(timesField.getText() .toString()); if ((name.length() > 0) && (times > 0)) { for (int count = 0; count < times; count++) { dataAdapter.add(name); } } dialog.dismiss(); } }); builder.setNegativeButton(R.string.cancelButtonLabel, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int which) { dialog.dismiss(); } }); return builder.create(); } }
直接用 dataAdapter 是不需要唤醒的
在LWUIT下载包中,有一个名为“Resource Editor”的资源编辑器,这个编辑器可以实现将资源文件象主题、图片、动画、字体信息等编辑好,然后在LWUIT应用程序中直接调用资源文件,就可以 使用这些编辑好的资源了。从而大大简化了,开发人员对界面的美化工作。
资源编辑器位于LWUIT下载包的util文件夹下,如下图所示:
图1-1 Resource Editor所在的文件夹
鼠标双击该文件夹下的“ResourceEdit.exe”文件夹,即启动了编辑器,启动界面如下图所示:
图1-2 Resource Editor启动界面
要创建一个主题,双击左窗格上的“+”按钮,则会打开一个用于输入主题名称的对话框,如下图所示:
图1-3 创建主题
当你单击“OK”按钮时,新主题的名称会显示在左窗格中,单击此主题标签,在右窗格中会出现一个空白主题。
要填充该空白主题,单击“add”按钮,则会打开add对话框,你可以在此对话框顶部的组合框中选择一个组件和属性。如下图所示:
图1-4 主题组件属性设置
在图1-4中,选中的组件是一个窗体(Form),选中的属性是背景色,该颜色的RGB值可以作为一个十六进制的字符串提供的空白处;你也可以单击 该空白旁边的颜色盒来输入颜色值,这会打开一个Color Chooser,选中颜色后,该颜色值就会显示在空白处。
单击OK按钮,该项会出现在主编辑器窗口的右窗格。注意:可以通过使用相应的按钮编辑或删除已添加的选项。所有项都完成后,你可以通过选择File -> Save As 将其保存。保存的资源文件的扩展名是“res”。
下列两图显示了一个已经编辑好的主题资源信息:
图1-5 主题“未选中”组件的属性设置
图1-5中,显示了名为“Theme1”的 主题中所包含的一些设置信息,其中,包括对Button的边界以及透明度、Form的背景图片、Label的透明度、Menu的透明度、 SoftButton的透明度以及Title的字体与透明度的设置,注意,此时的设置信息是在这些组件都未选中时的信息。
图1-6 主题“已选中”组件的属性设置
图1-6中显示的是对已选中的组件的设置信息,其中,包括对Button的边界与透明度的设置。
好,到此为止,如何使用编辑器来编辑资源这一问题就介绍完了,下面,让我们来看看使用这个主题资源显示的效果,如下图所示:
其源代码如下:
package com.shen.resource; import java.io.IOException; import javax.microedition.midlet.MIDlet; import javax.microedition.midlet.MIDletStateChangeException; import com.sun.lwuit.Button; import com.sun.lwuit.Command; import com.sun.lwuit.Display; import com.sun.lwuit.Form; import com.sun.lwuit.Label; import com.sun.lwuit.layouts.BoxLayout; import com.sun.lwuit.plaf.UIManager; import com.sun.lwuit.util.Resources; public class TestResource extends MIDlet { private Form form; private Button btn1,btn2,btn3; private Command cmd1,cmd2,cmd3; public TestResource() { Display.init(this); form = new Form(); Label label = form.getTitleComponent(); label.setText("Resource测试"); form.setLayout(new BoxLayout(BoxLayout.Y_AXIS)); btn1 = new Button("Button1"); btn2 = new Button("Button2"); btn3 = new Button("Button3"); form.addComponent(btn1); form.addComponent(btn2); form.addComponent(btn3); cmd1 = new Command("确定"); cmd2 = new Command("返回"); cmd3 = new Command("退出"); form.addCommand(cmd1); form.addCommand(cmd2); form.addCommand(cmd3); Resources rs = null; try { rs = Resources.open("/res1.res"); } catch (IOException e) { e.printStackTrace(); } // img = rs.getImage("Image1"); UIManager.getInstance().setThemeProps(rs.getTheme("Theme1")); form.refreshTheme(); } protected void destroyApp(boolean arg0) throws MIDletStateChangeException { } protected void pauseApp() { } protected void startApp() throws MIDletStateChangeException { form.show(); } }
该工程的程序结构如下图所示:
总结 :LWUIT的资源编辑器与Style的使用效果相同,但是对于一个拥有比较多界面的项目来说,使用资源编 辑器可以节省较大的工作量。因此,对于比较复杂的项目,推荐使用资源编辑器来组织资源。