- 浏览: 60287 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
cyhcheng:
http://android-sdk-addons.motod ...
android 更新列表 -
cyhcheng:
递归删除.svn文件夹find -name '.svn' |x ...
在ubuntu下安装subversion -
cyhcheng:
http://cssdeck.com/labs/html5-d ...
varnish -
cyhcheng:
http://demo.geo-solutions.it/sh ...
install,create and usetemplate database -
cyhcheng:
入门学习站点:http://ian01.geog.psu.ed ...
install,create and usetemplate database
SimpleMenuActivity.java代码:
package org.penguin.study.android.menu; import android.app.Activity; import android.app.AlertDialog; import android.app.Dialog; import android.content.Context; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.graphics.Color; import android.os.Bundle; import android.os.Handler; import android.util.AttributeSet; import android.view.InflateException; import android.view.KeyEvent; import android.view.LayoutInflater; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.widget.TextView; import android.widget.Toast; /** * 官方资料:http://developer.android.com/guide/topics/ui/menus.html * Menu资料:http://developer.android.com/guide/topics/resources/menu-resource.html */ public class SimpleMenuActivity extends Activity { private TextView messageTV; /** Called when the activity is first created. */ @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); messageTV = (TextView) findViewById(R.id.messageTV); } @Override public boolean onCreateOptionsMenu(Menu menu) { // // groupId:分组的Id,如果不用分组就用0 // // ItemId:menu当中每一项的Id,这个Id应该是唯一的 // // order:排列的顺序 // // menu.add(0, 19991, 1, "打开").setIcon(R.drawable.icon); // menu.add(0, 19992, 2, "关闭").setIcon(R.drawable.delicious); // menu.add(0, 19993, 0, "帮助").setIcon(R.drawable.google); // int menuItemCounts = menu.size(); // messageTV.setText("Menu项数:" + menuItemCounts); MenuInflater menuInflater = getMenuInflater(); menuInflater.inflate(R.menu.simple_menu, menu); setMenuBackGround(); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { messageTV.setText(String.format("分组Id:%d、ItemId:%d、顺序:%d、标题:%s", item.getGroupId(), item.getItemId(), item.getOrder(), item.getTitle())); return super.onOptionsItemSelected(item); } @Override public boolean onKeyDown(int keyCode, KeyEvent event) { System.out.println("KeyCode === " + keyCode + "、" + KeyEvent.KEYCODE_BACK); if (keyCode == KeyEvent.KEYCODE_BACK) { System.out.println("模拟器中ESC键是Back键"); // Toast.makeText(this.getApplicationContext(), "你按下了Home键", // Toast.LENGTH_LONG).show(); // AlertDialog.Builder(SimpleMenuActivity.this).setTitle("提示标题").setMessage("这是提示内容").show(); new AlertDialog.Builder(SimpleMenuActivity.this).setTitle("您确认要退出吗?").setMessage("这是提示内容").setPositiveButton("退出", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println("1 === " + dialog.getClass() + "、" + which + "、" + Dialog.BUTTON_POSITIVE); } }).setNegativeButton("取消", new OnClickListener() { @Override public void onClick(DialogInterface dialog, int which) { System.out.println("2 === " + dialog.getClass() + "、" + which + "、" + Dialog.BUTTON_NEGATIVE); } }).create().show(); return true; } return super.onKeyDown(keyCode, event); } // 核心代码:重写Layout.Factory.onCreateView()方法自定义布局 protected void setMenuBackGround() { SimpleMenuActivity.this.getLayoutInflater().setFactory(new LayoutInflater.Factory() { @Override public View onCreateView(String name, Context context, AttributeSet attrs) { if (name.equalsIgnoreCase("com.android.internal.view.menu.IconMenuItemView") || name.equalsIgnoreCase("com.android.internal.view.menu.ListMenuItemView")) { LayoutInflater layoutInflater = getLayoutInflater(); try { final View view = layoutInflater.createView(name, null, attrs); new Handler().post(new Runnable() { @Override public void run() { view.setBackgroundColor(Color.BLUE); // view.setBackgroundResource(R.drawable.icon); } }); return view; } catch (InflateException e) { System.err.println(e.getMessage()); } catch (ClassNotFoundException e) { System.err.println(e.getMessage()); } } return null; } }); } }
布局文件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:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello" android:id="@+id/messageTV" /> </LinearLayout>
menu/simple_menu.xml代码:
<?xml version="1.0" encoding="utf-8"?> <menu xmlns:android="http://schemas.android.com/apk/res/android"> <item android:id="@+id/openMenuItem" android:icon="@drawable/icon" android:title="@string/open" /> <item android:id="@+id/helpMenuItem" android:icon="@drawable/google" android:title="@string/help" /> <item android:id="@+id/closeMenuItem" android:icon="@drawable/delicious" android:title="@string/close" /> <item android:title="废话1" /> <item android:title="废话2" /> <item android:title="废话3" /> <item android:title="更多1" /> <item android:title="更多2" /> <item android:title="更多3" /> <item android:title="更多4" /> <item android:title="更多5" /> <item android:title="更多6" /> <item android:title="更多7" /> <item android:title="更多8" /> <item android:title="更多9" /> </menu>
至于用到的图片(ico.png、google.png、delicious.png)均为png格式,从网上随便早点就ok了。一般放到drawable-hdpi目录就ok了。
strings.xml代码:
<?xml version="1.0" encoding="utf-8"?> <resources> <string name="hello">有些事情,做了才有可能;如果仅是欣赏,我们只有回忆,但却不曾拥有</string> <string name="app_name">友好的菜单入门</string> <string name="help">帮助</string> <string name="open">打开</string> <string name="close">关闭</string> </resources>
发表评论
-
实现不选择选项则不可以关闭的对话框之方法三
2013-12-25 00:05 640本方法基于Dialog,使用自定义布局,更能满足发杂的需求。 ... -
实现不选择选项则不可以关闭的对话框之方法二
2013-12-24 23:28 767本方法在打开对话框后,如果没有选中项则禁用Positive ... -
实现不选择选项则不可以关闭的对话框之方法一
2013-12-24 23:23 578本方法中,当点击Positive Button时,如果没有选 ... -
Android开发环境搭建
2013-12-17 22:57 653由于本人现在使用mac了,所以特别记录下mac下的几条命令: ... -
关于空指针异常的处理
2013-10-14 10:27 662在Android中使用Log时的处理: I ... -
NDK入门
2013-07-15 16:51 467下载Android SDK、NDK,配置环境变量 新建 ... -
Android 中DatePickerDialog和TimePickerDialog使用旧版的样式
2013-07-11 15:27 2379想在Android3.*+项目中使用Android2.*版 ... -
调用google cloud print
2013-07-04 16:15 1417判断本地是否安装某个应用,如果没有安装,则打开google ... -
调用google translate
2013-07-04 15:21 997Intent i = new Intent(); i.set ... -
读取Tag数据
2013-04-28 15:33 1148import java.io.UnsupportedEnco ... -
向Tag写入数据
2013-04-28 15:24 1615授权: <uses-permission ... -
ubuntu下安装android开发环境
2012-04-11 10:54 848sudo umount /media/cdrom sudo ... -
android 更新列表
2012-04-11 09:18 1031https://dl-ssl.google.com/andro ... -
Android常见问题及其解决办法
2012-02-15 13:44 3599今天在向模拟器部署运行项目时碰到下面的异常: [201 ... -
Layout动画入门
2012-02-09 12:02 1366针对Layout或者ViewGroup对象,可以方便的通过xm ... -
逐帧动画入门
2012-02-09 10:58 1119简单来讲,逐帧动画就 ... -
Sqlite入门
2011-09-23 09:35 942在Android下,对Sqlite3进行了封装,使用相对更简单 ... -
Notification入门
2011-06-10 19:03 1342题外话:在Android中服务必须在Actvi ... -
CheckBox与ListView的结合方法一
2011-06-03 14:19 1978最近这段时间比较闲,每天都无所事事。不再想重复这样的生 ...
相关推荐
在C# WinForms应用程序开发中,皮肤(主题)的自定义和动态切换是提升用户体验...此外,对于更复杂的应用场景,可能需要设计更灵活的皮肤加载机制,例如支持远程加载皮肤文件,或者提供皮肤编辑器让用户自定义皮肤等。
5. **皮肤(Themes)**:DotNetBar提供了多种预设的视觉样式和主题,使得应用程序的界面看起来更专业,同时支持自定义皮肤。 6. **表单边栏(Docking)**:可以实现窗口部件的停靠功能,如创建浮动窗口、停靠到窗口...
本文将深入探讨如何利用JS实现多种下拉菜单及其相关功能,包括无限极菜单的构建、自定义配置以及换肤等特性。 1. **下拉菜单原理**: 下拉菜单是网页交互设计中的常见元素,通常由一个主菜单项触发显示或隐藏一...
本篇文章将深入探讨ASP.NET服务器控件的开发技术及其实际应用。 1. **控件类型**: - 基本控件:如Label、TextBox、Button等,提供了网页的基本输入和显示功能。 - 数据绑定控件:如GridView、ListView、Repeater...
11. **皮肤和主题(Skinning and Theming)**:ComponentArt 提供了一系列预设的皮肤和主题,同时也允许开发者自定义皮肤,以满足项目的特定设计需求。 除了这些组件,ComponentArt Web.UI 还提供了强大的事件处理...
ECMAll模板制作教程是一个详尽的指南,旨在帮助用户理解和创建ECMAll系统的...在后续章节中,教程可能还会涵盖模块制作、皮肤编辑、动态内容处理以及模板调试等高级主题,帮助开发者更加全面地掌握ECMAll的模板系统。
RichFaces扩展了JSF的事件模型,提供了服务器端和客户端的自定义事件处理。`<rich:componentControl>`标签可用于监听和响应特定组件的事件。 5. **数据展示与处理**: RichFaces的`<rich:dataTable>`和`...
8. **自定义错误处理(Custom Error Handling)**:开发者可以配置详细的错误处理页面,提升用户体验,同时方便调试。 9. **配置系统(Configuration System)**:ASP.NET 2.0的配置系统更加灵活,允许开发者在不修改...
在C#编程中,控件是构建用户界面(UI)的核心元素。它们允许开发者创建具有交互性的图形...同时,通过学习和理解控件的事件处理、数据绑定以及自定义控件等高级特性,开发者可以进一步提升应用程序的质量和用户体验。
同时,也支持自定义皮肤,以满足特定的设计需求。 9. **国际化(Internationalization, i18n)**:EasyUI 1.3 版本中,中文版的 API 为中文开发者提供了更好的本地化体验,包括组件的文本和错误消息都进行了汉化。 ...
RadControls集合包括一系列的服务器端控件,如Grid、TreeView、Menu、Calendar、Chart等,它们提供了丰富的功能和自定义选项,以满足Web应用的各种需求。这些控件利用AJAX技术,实现了页面的部分更新,提高用户体验...
以下是对这个组件库及其相关知识点的详细说明: 1. **ComponentArt**:ComponentArt是一家知名的软件公司,专注于提供高质量的UI控件和服务。他们的Web UI库包括一系列的ASP.NET控件,如Grid、Tree、Menu、Tab等,...
6. **主题和皮肤**:EXT 3.0.0支持自定义主题和皮肤,可以通过更换CSS样式来改变整个应用的外观,满足不同项目的需求。 7. **国际化支持**:EXT框架内建了国际化的支持,允许开发者轻松地将应用翻译成多种语言,...
2. **主题支持**:框架内置了多种预设主题,可以根据项目需求轻松切换,同时也支持自定义主题,提供了一套完整的皮肤定制机制。 3. **数据绑定**:EasyUI 支持与后端数据源的双向绑定,如 JSON、XML 或者服务器的 ...
每个步骤都可以有自己的内容和布局,Wizard控件自动处理导航逻辑,提供了一种直观的用户体验。 ### 6. Login控件 ASP.NET 2.0引入了新的身份验证和授权机制,Login控件就是其中的一部分。它简化了用户登录界面的...
1.36版可能增加了更多数据处理和展示的选项,例如行编辑、列自定义等,以满足复杂的数据展示需求。 3. **表单(Form)**:EasyUI 提供了各种表单控件,如输入框、下拉框、复选框等,可自动校验数据。开发者可以通过 `...
这个"PowerBuilder编程俱乐部常见问题解答"涵盖了PowerBuilder使用过程中遇到的各种问题及其解决方案,旨在帮助开发者解决实际开发中可能遇到的难题。 1. **PowerBuilder基本概念** - **数据窗口**:PowerBuilder...
以下是关于jQuery EasyUI及其常用组件的详细说明: 1. **基本概念**: - **jQuery**:jQuery是一个轻量级、高性能的JavaScript库,简化了HTML文档遍历、事件处理、动画以及Ajax交互。 - **EasyUI**:基于jQuery的...