zoukankan      html  css  js  c++  java
  • Android 入门到精通 (界面编程#2Menu)

          Android手机的菜单很美观大方,其编程实现起来也简洁明快,如果谁用过QT的界面编程,那么看一眼Android的Menu编程会马上会心微笑,
    Option Menu:
    看看下一段代码:
    import android.app.Activity;
    import android.os.Bundle;
    import android.view.Menu;
    import android.view.MenuItem;

    public class HelloActivity extends Activity { 
     @Override
     public boolean onCreateOptionsMenu(Menu menu) {
      // TODO Auto-generated method stub
      super.onCreateOptionsMenu(menu);
      menu.add(0, Menu.FIRST+1, 1, R.string.menu_open);
      menu.add(0, Menu.FIRST+2, 2, R.string.menu_edit);
      menu.add(0, Menu.FIRST+3, 3, R.string.menu_update);
      menu.add(0, Menu.FIRST+4, 4, R.string.menu_close);
      return true;
     }

     @Override
     public boolean onOptionsItemSelected(MenuItem item) {
      // TODO Auto-generated method stub
      super.onOptionsItemSelected(item);
      switch(item.getItemId())
      {
      case Menu.FIRST + 1:
      {
       this.setTitle("Open Text!");
       break;
      }
      case Menu.FIRST + 2:
      {
       this.setTitle("Edit Text!");
       break;
      }
      case Menu.FIRST + 3:
      {
       this.setTitle("Update Text!");
       break;
      }
      case Menu.FIRST + 4:
      {
       this.setTitle("Close Text!");
       break;
      }
      }
      return true;
     }

     @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);      
            this.setContentView(R.layout.main);  
        }
    }

    只需要改写父类Activity的两个函数即可,方便之极。也就是说Android早就为你写好了相关的代码,你只要填一些菜单项,再对每一个菜单项的ItemId编写具体的
    操作代码就行了。
    Android资源
    上述代码中有几行可能对于入门者不好理解
    1.添加菜单menu.add(0, Menu.FIRST+1, 1, R.string.menu_open);
                  menu.add(0, Menu.FIRST+2, 2, R.string.menu_edit);代码中的 R.string.menu_open/menu_edit
    这些其实是指资源文件中的ID,映射到具体的资源,这里是映射到字符串资源menu_open, menu_edit,其具体的值可以看res/values/string.xml在这里定义了字符串的值:
    <?xml version="1.0" encoding="utf-8"?>
    <resources>
        <string name="hello">Hello World, HelloActivity!</string>
        <string name="app_name">HelloWorld</string>
    <string name="menu_open">Open</string>
    <string name="menu_edit">Edit</string>
    <string name="menu_update">Update</string>
    <string name="menu_close">Close</string>
    </resources>
    在Android中,Activity显示的布局也可在资源中定义,并且以可视化的方式来操作布局对应的XML文件。可以看res/layout/main.xml这就是一个布局文件,这里指定了这个布局里有哪些界面元素以及如何组织,相对位置,绝对位置等信息。来看看其中内容:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:orientation="vertical"
        android:layout_width="fill_parent"
        android:layout_height="fill_parent"
        >
    <TextView android:id="@+id/TextView01" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="MyTest OK yest!"></TextView>

    </LinearLayout>

    这里就描述了布局为LinearLayout,包含了一个TextView,TextView的值为 MyTest.这个XML文件被编译后,可以使用R.layout.main的ID来从资源中取得。
    于是Activity可以用setContentView(R.layout.main)来直接从资源取得布局,来绘制界面元素。
    另一类常用资源就是图片
    在res/drawable/下面有一些图片,你也可以新加一些图片到这里。然后就可以通过.R.drawable.xxx 的ID来从资源中取得对应的图片。

    Context Menu:
    上面是手机底部菜单,Android还提供了Context上下文菜单的操作,也相当简单,看如下代码:

  • 相关阅读:
    解决Xcode8打印了nw_socket_handle_socket_event Event mask
    调用系统框架使用设备系统语言的设置,相册相机设置为中文
    ios开发 之 设置多种文字颜色/背景色/文字下划线/行间距 NSString
    IOS 开发中 Whose view is not in the window hierarchy 错误的解决办法
    UITableView设置cell的separator 分割线
    iOS用户点击推送消息进入应用后自动跳转到对应的ViewController
    随感
    JS获取当前网页大小以及屏幕分辨率等
    js将秒转换为 分:秒 函数
    css实现强制不换行/自动换行/强制换行
  • 原文地址:https://www.cnblogs.com/windwithlife/p/1528694.html
Copyright © 2011-2022 走看看