当前位置:  编程技术>移动开发
本页文章导读:
    ▪Notification 的应用        Notification 的使用 NotificationManager mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE); // Set the icon, scrolling text and timestamp 设置可以在状态栏上显示的图标和提示信息 Notification notification = .........
    ▪ listView不同间距形式        listView不同间隔形式  首先是普通的动态添加item效果 public class MultipleItemsList extends ListActivity {   private MyCustomAdapter mAdapter;   @Override public void onCreate(Bundle savedInstanceState) { super.o.........
    ▪ 转wap开发之wml详细课程       转wap开发之wml详细教程 转一篇很好的wap开发教程,写的很详细,还有实例转自:http://blog.csdn.net/hallywang/archive/2007/07/30/1717008.aspx==================================================    *      1. WAP构.........

[1]Notification 的应用
    来源: 互联网  发布时间: 2014-02-18
Notification 的使用
NotificationManager mNM = (NotificationManager)getSystemService(NOTIFICATION_SERVICE);

// Set the icon, scrolling text and timestamp  设置可以在状态栏上显示的图标和提示信息
      Notification notification = new Notification(R.drawable.stat_sample, text,
                    System.currentTimeMillis());

// The PendingIntent to launch our activity if the user selects this notification
//用户在状态栏点击相应的notify可以发送的Intent(连接到相应的activity)
            PendingIntent contentIntent = PendingIntent.getActivity(this, 0,
                    new Intent(this, ForegroundServiceController.class), 0);

// Set the info for the views that show in the notification panel.
//状态栏的notify展开后显示的文本信息
            notification.setLatestEventInfo(this, getText(R.string.local_service_label),
                           text, contentIntent);

mNM.notify(R.string.foreground_service_started, notification);//使用R.string.foreground_service_started 是因为它是一个唯一ID

//取消notify

mNM.cancel(id);//id=R.string.foreground_service_started 之前定义的一个唯一ID





    
[2] listView不同间距形式
    来源: 互联网  发布时间: 2014-02-18
listView不同间隔形式



 首先是普通的动态添加item效果

public class MultipleItemsList extends ListActivity {
 
    private MyCustomAdapter mAdapter;
 
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        mAdapter = new MyCustomAdapter();
        for (int i = 0; i < 50; i++) {
            mAdapter.addItem("item " + i);
        }
        setListAdapter(mAdapter);
    }
 
    private class MyCustomAdapter extends BaseAdapter {
 
        private ArrayList mData = new ArrayList();
        private LayoutInflater mInflater;
 
        public MyCustomAdapter() {
            mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
 
        public void addItem(final String item) {
            mData.add(item);
            notifyDataSetChanged();
        }
 
        @Override
        public int getCount() {
            return mData.size();
        }
 
        @Override
        public String getItem(int position) {
            return mData.get(position);
        }
 
        @Override
        public long getItemId(int position) {
            return position;
        }
 
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            System.out.println("getView " + position + " " + convertView);
            ViewHolder holder = null;
            if (convertView == null) {
                convertView = mInflater.inflate(R.layout.item1, null);
                holder = new ViewHolder();
                holder.textView = (TextView)convertView.findViewById(R.id.text);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder)convertView.getTag();
            }
            holder.textView.setText(mData.get(position));
            return convertView;
        }
 
    }
 
    public static class ViewHolder {
        public TextView textView;
    }
}

那么如何实现上面的呢?

  • Override getViewTypeCount()
  • Override getItemViewType(int)
  • Create correct convertView
  • public class MultipleItemsList extends ListActivity {
     
        private MyCustomAdapter mAdapter;
     
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            mAdapter = new MyCustomAdapter();
            for (int i = 1; i < 50; i++) {
                mAdapter.addItem("item " + i);
                if (i % 4 == 0) {
                    mAdapter.addSeparatorItem("separator " + i);
                }
            }
            setListAdapter(mAdapter);
        }
     
        private class MyCustomAdapter extends BaseAdapter {
     
            private static final int TYPE_ITEM = 0;
            private static final int TYPE_SEPARATOR = 1;
            private static final int TYPE_MAX_COUNT = TYPE_SEPARATOR + 1;
     
            private ArrayList mData = new ArrayList();
            private LayoutInflater mInflater;
     
            private TreeSet mSeparatorsSet = new TreeSet();
     
            public MyCustomAdapter() {
                mInflater = (LayoutInflater)getSystemService(Context.LAYOUT_INFLATER_SERVICE);
            }
     
            public void addItem(final String item) {
                mData.add(item);
                notifyDataSetChanged();
            }
     
            public void addSeparatorItem(final String item) {
                mData.add(item);
                // save separator position
                mSeparatorsSet.add(mData.size() - 1);
                notifyDataSetChanged();
            }
     
            @Override
            public int getItemViewType(int position) {
                return mSeparatorsSet.contains(position) ? TYPE_SEPARATOR : TYPE_ITEM;
            }
     
            @Override
            public int getViewTypeCount() {
                return TYPE_MAX_COUNT;
            }
     
            @Override
            public int getCount() {
                return mData.size();
            }
     
            @Override
            public String getItem(int position) {
                return mData.get(position);
            }
     
            @Override
            public long getItemId(int position) {
                return position;
            }
     
            @Override
            public View getView(int position, View convertView, ViewGroup parent) {
                ViewHolder holder = null;
                int type = getItemViewType(position);
                System.out.println("getView " + position + " " + convertView + " type = " + type);
                if (convertView == null) {
                    holder = new ViewHolder();
                    switch (type) {
                        case TYPE_ITEM:
                            convertView = mInflater.inflate(R.layout.item1, null);
                            holder.textView = (TextView)convertView.findViewById(R.id.text);
                            break;
                        case TYPE_SEPARATOR:
                            convertView = mInflater.inflate(R.layout.item2, null);
                            holder.textView = (TextView)convertView.findViewById(R.id.textSeparator);
                            break;
                    }
                    convertView.setTag(holder);
                } else {
                    holder = (ViewHolder)convertView.getTag();
                }
                holder.textView.setText(mData.get(position));
                return convertView;
            }
     
        }
     
        public static class ViewHolder {
            public TextView textView;
        }
    }

        
    [3] 转wap开发之wml详细课程
        来源: 互联网  发布时间: 2014-02-18
    转wap开发之wml详细教程
    转一篇很好的wap开发教程,写的很详细,还有实例
    转自:http://blog.csdn.net/hallywang/archive/2007/07/30/1717008.aspx
    ==================================================

        *
          1. WAP构架
              o WML是一种适用于无线互连网的标记语言。
              o WAP(Wireless Application Protocol)是适用于无线互连网的网络协议。
              o 客户是各种基于WAP协议的手持设备或者是各种模拟器。
              o WAP网关有两个功能:对WML网页进行编码和解码;实现HTTP协议和WAP协议之间的转换,如图3-21所示。
              o WAP服务器是指在MIME配置中设置了WML数据类型的Web服务器。
              o 为什么采用WAP:方便、安全。

          图 3-21 WAP构架
        *
          2. URL
              o WML使用和HTML相同的引用方式。

                  例如:http://wap.yestock.com/index.wml
              o 在URL后使用片段。

                  例如:http://wap.yestock.com/index.wml#login
              o 相对的URL——基础URL是当前的卡片。

                  例如:<go href="/next/index.html" />
        *
          3. Content-type
              o 在互联网上使用WML数据类型。
              o 要想使用Web服务器传输WML数据类型,就需要对Web服务器的MIME设置进行配置。
              o 需要增加以下数据类型:

          wml:text/vnd.wap.wml
          wmlc:application/vnd.wap.wmlc
          wmls:text/vnd.wap.wmlscript
          wbmp:image/vnd.wap.wbmp
          其他可选的数据类型:
          wmlsc:application/vnd.wap.wmlscriptc
          wmlscript:text/vnd.wap.wmlscript
          ws:text/vnd.wap.wmlscript
          wsc:application/vnd.wap.wmlscriptc
        *
          4. WML字符集
              o WML是XML的子集,继承了XML的字符集设置。
              o WML文档默认的字符集是UTF–8。
        *
          5. 标签和属性
              o 标签:

              一个完整的WML标记有以下两种格式:

                  (1)<tag> content </tag>
                  (2)<tag/>
              o 属性:
                    + 可以随意地指定或添加标签的属性。
                    + 属性的格式:<tag attr="abcd"/>。
                    + 所有的XML名字都是大小写敏感的。
                    + 所有的属性值都必须用双引号或单引号括起来。
        *
          6. 变量
              o WML卡片中可以使用变量。
              o 描述变量的语法在WML中有最高的解释优先级。
              o 当空格无法表示一个变量名结束的时候,就必须使用括号将参数名括起来。
              o $$在WML中代表一个‘$’符号。
              o 变量语法格式有以下三种:
                    + $identifier
                    + $(identifier)
                    + $(identifier:conversion)
              o 变量使用说明:
                    + 可以在字符串中使用。
                    + 可以在运行中更新变量的值。
                    + 如果变量不等同于空字符串,变量处于设置状态(NOT NULL)。
                    + 如果变量等同于空字符串,变量处于未设置状态(NULL)。
              o 变量替代:
                    + 变量的数值可以代入卡片中的文本。
                    + 只有文本部分可以实现替代。
                    + 任何标签和属性都不能使用变量来替代。
                    + 替代将在运行期发生。
                    + 替代将不影响变量现在的值。
                    + 替代是按照字符串替代的方式工作。
                    + 如果一个没有定义的变量要实现替代,那么该变量将被看作空字符串。
                    + 变量名是由US-ASCII码、下划线和数字组成,并且只能以US-ASCII码开头。
              o 变量名是大小写敏感的。
        *
          7. 美元符号
              o 美元符号:
                    + 要想在文本中显示美元符号,必须成对使用。
                    + 一个美元符号表示变量替代。
                    + 一个简单的显示美元符号的例子:This is a $$ character。
              o 有效性:
                    + 在美元符号后面接字符串都将被认为是变量替代或者是生效。
                    + 几个无效的例子:

                          <!--错误的变量语法-->
                          Balance left is $10.00.
                          <!--错误的位置(变量type在属性内)-->
                          <do type="x-$(type)" label="$type">
        *
          8. newcontext属性

              newcontext等于true或false,将决定浏览是否做以下事情:
              o 删除所有在当前上下文中定义的变量。
              o 清除历史信息。
              o 重新设置所有的状态为一个默认的状态。

                  例如:<card id="card1" title="Mortgage Calc" newcontext="true">
        *
          9. 大小写敏感
              o WML和XML都是大小写敏感的语言。
              o 所有的WML标记和属性都是小写敏感的。
              o 任何枚举的属性值也是大小写敏感的。
        *
          10. 页面与卡片
              o WML是XML语言的子集。
              o 一个WML应用是由许多页面(deck)所组成的。一个WML的页面就相当于HTML的一页。
              o 一个WML页面是由文件声明和WML标记对组成。
              o WML标记对中间有一个或多个卡片组成。
              o WML就是在各个卡片之间传递信息和切换。
        *
          11. WML标记对

          WML标记对是指<wml>和</wml>组成的标记对。
              o WML标记对是任何一个WML页面的根标签。
              o WML标记对中可以包含一个或多个卡片。
              o WML标记对中可以使用可选的“模板”来生成所包含的所有卡片的相关动作。
        *
          12. WML例子

          先阅读下面的例子,在后面对例子中的各个部分将做详细的解释。

          <?xml version="1.0"?>
          <!DOCTYPE WML PUBLIC "-//WAPFORUM//DTD WML1.1//EN"
          "http://www.wapforum.org/DTD/wml_1.1.xml">

          <wml>
            <card>
              <p>
               Hello world !
               This is the first card…
              </p>
               <do type="accept">
                  <go href="#card2"/>
               </do>
            </card>
            <card id="card2">
              <p>
               This is the second card.
               Goodbye
              </p>
            </card>
          </wml>
        *
          13. 文件声明
              o XML声明总是在文件的第一行。前面最好不要有空格或者换行。

          <?xml version="1.0"?>
              o DOCTYPE声明。

          <!DOCTYPE WML PUBLIC "-//WAPFORUM//DTD WML1.1//EN"
          "http://www.wapforum.org/DTD/wml_1.1.xml">
        *
          14. 事件与导航
              o WML包括导航和事件处理模块。
              o WML允许作者指定需要处理的事件。
              o 事件可以和所需要完成的任务捆绑在一起。
              o URL导航就是这样的一个例子。
              o 事件捆绑是通过几种标签声明来完成的,包括:go、do和onevent。
              o do标签比go标签需要用户更多的参与。
        *
          15. do标签
              o do标签提供了一个通用的事件处理机制,使得用户可以参与当前卡片的事件处理。
              o WML提供一些预先定义的do模块。
              o accept:确定(或接受)。
              o prev:返回到上次的位置。
              o help:请求帮助。
              o options:上下文敏感的选项请求。

          <do type="options" name="do1" label="options">
             <go href="/options/index.html"/>
          </do>
        *
          16. 任务
              o go标签——当用户选中该标签时,就引导用户去WML中指定URL。

          <go href="http://www.simpleteam.com/wireless.wml">Simple Team</go>
              o prev标签——当用户选中该标签时,就引导用户去上次用户访问过的URL。

          <do type="options" name="do1" label="default">
            </prev>
          </do>
              o refresh标签——当用户选中该标签时,变量值将被重新设置。

          <do type="refresh">
            <refresh>
              <setvar name="firstname" value="forest">
              <setvar name="lastname" value="luo">
              <setvar name="age" value="25">
            </refresh>
          </do>
        *
          17. setvar标签
              o 指定在当前上下文中的变量值,从侧面影响正在运行的任务。
              o 必须使用name属性指定变量的名字。
              o 必须使用value属性指定所要赋给变量的值。
        *
          18. select与option标签
              o select标签和option标签是用来在WML中形成选择任务。
              o option标签可以指定在用户做出选择后的目标地址。

          <select name="type">
            <option value="boxed" onpick="#selectBoxed">boxed</option>
            <option value="arranged" onpick="selectArranged">arranged</option>
          </select>
        *
          19. input标签
              o input标签是用来收集用户的输入。
                   1. name属性是用来指定变量的名字。
                   2. value属性可以指定变量默认的值。

          <input name="firstname" type="text" value="Robert" format="*A" maxlength="32"/>
          <input type="text" name="age" format="*N"/>
          <input type="text" name="address" format="*M"/>
          <input type="password" name="password"/>
              o type属性可以用来指定按密码输入模式进行输入,否则就是普通的文本输入模式。
              o format属性用来指定输入的内容是数字(N)、字母、字母和数字,输入长度,大写或者小写等等。
        *
          20. 文本类标签
              o 段落:<p></p>(自动换行模式切换)
              o 空白:空格、制表符和换行都将被显示为空白。
              o 重点:em(强调)、strong(特别强调)、i(斜体)、u(下划线)、big(预定义的大字体),small(预定义的小字体)。
              o br标签:建立新的一行。

          <p>
            <b>
               Welcome to…
            </b>
            <strong><i>
               Simple Team
            </i></strong>
            <u>
              WAP site
            </u>
          </p>
        *
          21. 超链接标签
              o a标签和anchor标签被用来创建一个超级链接。选中该标签的时候,用户将被带入到链接的地址(可以是另外的页面或者是同一页面下的不同卡片)。
              o 也可以不使用a标签和anchor标签,而采用go标签中的href属性来创建一个超级链接。

          <anchor>
            fullow me<go href="/blog_article/destination/index.html"/>
          </anchor>

          <a href="/blog_article/destination/index.html">fullow me</a>

          <do type="accept" label="ACCEPT">
            <go href="http://www.simpleteam.com/yourcode" method="post">
              <postfield name="w" value="12"/>
              <postfield name="password" value="your password"/>
            </go>
          </do>
        *
          22. timer标签
              o timer可以用来延时显示页面或卡片,或在页面和卡片间实现切换以取得动画效果。
              o 下面的例子就是在显示“Hello World”5秒钟后,用户将被自动引导至"/next"所指定的位置:

          <wml>
            <card ontimer="/next">
              <timer value="50"/>
              <p>
                Hello World !
              </p>
            </card>
          </wml>
        *
          23. 注释
              o 简单的注释(单行或多行,注释中没有WML标记)。

          <!—将注释写在这里-->
              o 使用CDATA标记来实现带有WML标记的注释。

          <![CDATA[很多内容
            <b>buld text</b>
            ……
            <table culumn="2">
            …
            </table>
            还有很多…
          ]]>
        *
          24. template标签

          template标签声明一个在页面中所有卡片都可以使用的事件处理模块。
              o 模块中的事件处理将自动应用于同一页面中的所有卡片。
              o 某个卡片可以通过定义同名的事件处理来替代模块中的事件处理。

          <wml>
            <template>
              <do type="options" name="do1" label="default">
                <prev/>
              </do>
            </template>
            <card id="first">
            <!—该卡片将自动套用模块中定义的事件处理过程-->
            …
            </card>
            <card id="second">
            <!—该卡片将使用空操作(noop)来替代模块中定义的事件处理过程,那么就等价于该卡片中没有该事件处理过程—>
              <do type="options" name="do1">
                <noop/>
              </do>
              …
            </card>
            <card id="third">
            <!—该卡片使用同名的事件处理替代模块中提供的事件处理—>
              <do type="options" name="do1" label="options>
                <go href="/options/index.html"/>
              </do>
            </card>
          </wml>
        *
          25. table标签
              o table标签是用来创建能容纳文本和图片的表格。

          align属性是用来指定对齐的方式(“L”是左对齐,“C”是对中,“R”是右对齐。默认的对齐方式是从左到右的左对齐方式)。
              o tr标签用来指定表格的行。
              o td标签用来指定表格的列。

          <table culumns="2">
            <tr><td>One</td><td>Two</td></tr>
            <tr><td>1</td><td>2</td></tr>
            <tr><td>BA</td><td>B</td></tr>
          </table>
        *
          26. img标签
              o 当设备不能显示图像的时候,alt属性指定可选的文本。有时候这个属性是必须的。
              o src属性指定图像的来源。
              o align属性指定图像与相邻的文本对齐方式。

          <p>
          <img alt=":)" src="/logo.gif"/><br/>
          Welcome to…
          </p>
        *
          27. postfield标签

          指定向服务器指定提交时候的参数名字和参数数值。
              o Login和Password校验是最常用提交。
              o 一个使用go标签的提交例子。

          <go href="http://193.120.145.194:80/wap" methos="post">
            <postfield name="LI" value="$LI"/>
            <postfiels name="PV" value="$PV"/>
          </go>
        *
          28. 事件
              o ontimer事件:该事件发生在定时器过期的时候。
              o onenterforward事件:该事件发生在用户选中一个有效的URL之后,在正式引导用户去该URL地址之前。
              o onenterbackward事件:该时间发生在用户选中一个有效的prev操作之后,在正式引导用户之前。
              o onpick事件:该事件发生在用户选中某个选项。

          <card>
            <onevent type="onenterforward">
              <go href="/url_to_check_security/index.html"/>
            </onevent>
            <p>
              Help
            </p>
          </card>
          <card onenterforward="/url_to_check_security"/>
            <p>
              Hello
            </p>
          </card>
        *
          29. WML核心数据
              o 长度:
                    + 可以用整数指定画布(屏幕、纸张)的像素大小,或者用百分数表示占用的长度或宽度。
                    + “50”表示50个像素。
                    + “50%”表示占用一半的位置。
                    + 只能用在属性值中。
        *
          30. id和class属性
              o 所有的WML标签有两个核心属性:id和class。
              o 这两个属性被用于服务器方的信息传输。
              o id提供某个标签在页面中唯一的名字。
              o class接收标签一个更多的class定义。
              o 多个标签可以使用同一个class定义。
              o class的名字是大小写敏感的。
              o 标签也可以作为class中的一个部分。
        *
          31. 编程指导

          尽量使用户的操作简单、友好。
              o 建立一个操作流程图。
              o 定义每个卡片的操作。
              o 保持每个卡片小而且简单。
              o 尽量减少按键的次数。
              o 不要使用WML所有的属性(各个厂家对WML兼容情况是不同的)。
        *
          32. 创建一个新的WML文件

          <?xml version="1.0"?>
          <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
          "http://www.wapforum.org/DTD/WML_1.1.xml">
          <wml>
            <card id="card_name" title="title_name">
              <!—write your code here-->
            </card>
          </wml>

          由于WML的格式基本上都是一样的,可以自己做一个模板。这样省去了反复录入页面开头和结尾的时间。如果使用的是 MADK或者Nokia WAP Toolkit,那么在每次新生成WML文件的时候,它会自动地将模板准备好。在以后的程序中,为了说明的简洁,WML的标准开头和结尾将被省略。只要主要的卡片。
        *
          33. 增加卡片
              o 根据自己的需要改变卡片的id和title。
              o 增加卡片的内容。

          <?xml version="1.0"?>
          <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1//EN"
          "http://www.wapforum.org/DTD/wml_1.1.xml">
          <wml>
            <card id="welcome" title="welcome">
            <p>
                MADK WML DEMO.
            </p>
          </card>
          </wml>
        *
          34. 增加动作

          <?xml version="1.0"?>
          <!DOCTYPE wml PUBLIC "-//WAPFORUM//DTD WML 1.1 //EN"
          "http://www.wapforum.org/DTD/wml_1.1.xml">
          <wml>
            <card id="welcome" title="welcome">
              <do type="accept">
                <go href="#greeting"/>
              </do>
              <p>
                MADK WML DEMO.
              </p>
            </card>
            <card id="greeting">
              <p>
                Welcome to the wireless bookshop.
              </p>
            </card>
          </wml>

              下面将程序在Nokia WAP Toolkit上进行测试。启动Nokia WAP Toolkit,在“Go”下选择“Open Location”。在输入URL地址后,模拟器上出现图3-22所示的界面:

           3-22 欢迎界面

              这个时候显示的是页面中的第一张卡片。也就是id为“welcome”的card。它的标题是“welcome”。在选择“Options”后(这是Nokia的选择习惯,不同的模拟器的操作有所不同),模拟器上出现图3-23所示的界面:

          图 3-23 选择菜单

              在选择“Select”之后,模拟器上出现图3-24所示的界面。这是同一个页面中的第二张卡片。该卡片的id为“greeting”。由于没有设置title参数,因此模拟器没有显示标题。

          图 3-24 第二张卡片
        *
          35. 建立一个动画消息

          <card id="greeting" ontimer="#card2" title="Toulkit Demo">
            <timer value="30"/>
            <p>
              <big>
                Welcome to…
              </big>
            </p>
          </card>
          <card id="card2" ontimer="#card3" title="Toulkit Demo">
            <timer value="30"/>
            <p>
              <b>
                the Wonderful
              </b>
              <u>
                Wireless
              </u>
            </p>
          </card>
          <card id="card3" title="Toulkit Demo">
            <p>
              <big><i>
                Bookstore.
              </i></big>
            </p>
          </card>

              在Nokia WAP Toolkit对该程序进行测试。启动Nokia WAP Toolkit,在“Go”下选择“Open Location”。在输入URL地址后,模拟器上出现图3-25所示的界面。等待3秒,将跳到下一张卡片如图3-26所示。注意value为30,其实要除上10才是以秒为单位。

          图 3-25 欢迎界面

              Nokia WAP Toolkit对<big>、<u>支持得还挺好!等待3秒,将跳到下一张卡片。

          图 3-26 第二张卡片

              对<i>的支持也不错!已经到了最后一个页面(图3-27),不会再跳动了。如果想实现反复地跳动,可以试试自己修改一下程序。如果在程序中加入了另外的事件处理,那么当用户触发这些事件的时候,动画就会停止。

          图 3-27 最后一张卡片
        *
          36. 建立选项列表

          <card id="card3" title="Toulkit Demo">
            <do type="accept">
              <go href="#cullectbooktype"/>
            </do>
            <p>
              <b><i>
                BookStore.
              </i></b>
            </p>
          </card>
          <card id="cullectBookType">
            <p>
              Science or novel:
              <select name="type">
                <option value="science" onpick="#science">Science</option>
                <option value="novel" onpick="#novel">novel</option>
              </select>
            </p>
          </card>

              在Nokia WAP Toolkit对该程序进行测试。启动Nokia WAP Toolkit,在“Go”下选择“Open Location”。在输入URL地址后,模拟器上出现图3-28所示的界面。

          图 3-28 欢迎页面

           

              在进入到“Options”后,模拟器上出现图3-29所示的界面:

          图 3-29 选择菜单

             在选择“OK”以后,模拟器上显示的就是Nokia WAP Toolkit的选择方式(图3-30)。必须选择“Options”才能进入选择状态。目前默认的是“Science”。

           3-30 可编辑的选择项目

              在选择“Options”之后出现了浏览选项菜单(图3-31)。当然只有“Edit Selection”这一个选项。

          图 3-31 选择编辑选项

              在出现了所有的可选择项目(图3-32)。默认的状态是“Science”。注意,选择“Select”和”OK”两个操作所产生的结果是不一样的。

          图 3-32 所有的可选择项目

              选择“Select”之后,就立即触发了“onpick”事件。显然没有找到novel这张卡片。Nokia WAP Toolkit抛出了一个错误警告!(图3-33)

          图 3-33 错误警告

              果选择了“OK”,那么就回到了开始的选择页面。但是默认的选择变成了“novel”,说明修改成功(图3-34)。这两个操作方式的区别在于:前者主要是用来导航,而后者将修改选择值,type这个时候应该等于“novel”。

          图 3-34 修改成功
        *
          37. 建立更多的选项

          <card id="science">
            <p>
              select science title:
              <select name="productID">
                <option value="universe" onpick="#price">The Universe</option>

                <option value="space" onpick="#price">Facts About Space
                <option value="time" onpick="#price">Time Machine
              </select>
            </p>
          </card>
          <card id="novel">
            <p>
              select novel title:
              <select name="title">
                <option value="speed" onpick="#price">Speed</option>
                <option value="terminator" onpick="#price">Terminator</option>
                <option value="ghost" onpick="#price">Ghost</option>
              </select>
            </p>
          </card>

              如果把上面的程序加入到3.4.36的程序中,那么在选择“Select”的时候,就不会抛出错误警告了。读者可以自己再试试。
        *
          38. 滚动和setvar

          <card id="price">
            <do type="accept">
              <go href="#copies>
                <setvar name="price" value="30.0"/>
                <setvar name="discount" value="0.00"/>
              </go>
            </do>
            <p>
              Click accept to find the
              Price and enter number of copies you need:
            </p>
          </card>
        *
          39. 使用input
              o 使用正确的格式。
              o 选择一个合适的标题。
              o 限制所输入内容的最大长度。
              o 收集名字

          <card id="collectName">
            <do type="accept">
              <go href="#collectaddress"/>
            </do>
            <p>
              name:
              <input name="fullName" title="Full Name" format="*A" maxlength="9"/>
            </p>
          </card>
              o 收集地址

          <card id="collectAddress>
            <do type="accept">
              <go href="#cardtype">
                <setvar name="ship" value="4.0"/>
              </go>
            </do>
            <p>
              address:
              <input name="address" title="Address" format="*M" maxlength="9"/>
            </p>
          </card>
        *
          40. 选择信用卡类型

          <card id="cardType">
            <p>
              what kind of credit card?
              <select name="creditCardType">
                <option value="visa" onpick="#cardNo">visa
                <option value="mastercard" onpick="#cardNo">mastercard</option>
                <option value="discover" onpick="#cardNo">dicover</option>
              </select>
           </p>
          </card>
        *
          41. 输入信用卡号码

          <card id="cardNo">
            <do type="accept">
              <go href="#carddate"/>
            </do>
            <p>
              card number
              <input name="cardNumber" title="Card Number" format="*N" maxlength="16"/>
            </p>
          </card>
        *
          42. 输入信用卡过期日期

          <card id="cardDate">
            <do type="accept">
              <go href="#confirmation"/>
            </do>
            <p>
              expiration date
              <input name="creditCardExp" title="Expiration Date" format="*N" maxlength="8"/>
            </p>
          </card>
        *
          43. 确认

          <card id="confirmation">
            <p>
              Each is $$ $(price), you ordered $(unint) copies,
              Shipping is $$ $(ship), and total is $$64,
              Thank you ! Bye Bye !
            </p>
          </card>
        *
          44. 卡片调用

          <card id="collectAddress">
            <do tyoe="accept">
              <go href="/blog_article/card.wml">
                <setvar name="ship" value="4.0"/>
              </go>
            </do>
            <p>
              address:
              <input name="address" title="Address" format="*M"/>
            </p>
          </card>
        *
          45. 复合调用

          <card id="collectAddress">
            <do type="accept">
              <go href="http://www.abc.com/wml/card.wml#cardType">
                <setvar name="ship" value="4.0"/>
              </go>
            </do>
            <p>
              address:
              <input name="address" title="Address" format="*M"/>
            </p>
          </card>
        *
          46. 调用WMLScript

          <card id="confirmation">
            <do type="accept" label="Calculate">
              <go href="/blog_article/calculatetotal.wmls"/>
            </do>
            <p>
              Each is $$ $(price),
              You ordered $(unit) copies,
              Shipping is $$ $(ship), and
              Total is $$ $(total)
            </p>
          </card>
        *
          47. WMLScript例子

          //wml script used by book store application
          extern function calculateTotal(a,b,c)
          {
          //a: unit price
          //b: number of units
          //c: shipping charges

            var total=a*b+c;
            WMLBrowser.setVar("total",total);
            WMLBrowser.refresh();
          }

        
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    .net/c#/asp.net iis7站长之家
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3