- 浏览: 179985 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
beiizl:
用了博主的方法和代码,不同证书居然可以正常通讯?
Java SSLSocket的使用 -
SHANGLIJAVA:
sorry,运行时没看清。博主的代码确实没问题。。。
Java SSLSocket的使用 -
SHANGLIJAVA:
YoungeeOne 写道最后一个为什么初始化一个空的证书,也 ...
Java SSLSocket的使用 -
q979713444:
那这个的心跳怎么弄呢
Java SSLSocket的使用 -
43350860:
busybox不是每台机器有安装的, 有没有比较裸的办法获取p ...
android中查看端口占用
《Android内核剖析》第8章笔记
1. 分析
1.1 主要类
1.2 主要流程
1.3 关键代码
private void openPanel(PanelFeatureState st, KeyEvent event) { // System.out.println("Open panel: isOpen=" + st.isOpen); // Already open, return if (st.isOpen) { return; } Callback cb = getCallback(); if ((cb != null) && (!cb.onMenuOpened(st.featureId, st.menu))) { // Callback doesn't want the menu to open, reset any state closePanel(st, true); return; } final WindowManager wm = getWindowManager(); if (wm == null) { return; } // Prepare panel (should have been done before, but just in case) if (!preparePanel(st, event)) { return; } ....
public final boolean preparePanel(PanelFeatureState st, KeyEvent event) { // Already prepared (isPrepared will be reset to false later) if (st.isPrepared) return true; if ((mPreparedPanel != null) && (mPreparedPanel != st)) { // Another Panel is prepared and possibly open, so close it closePanel(mPreparedPanel, false); } final Callback cb = getCallback(); if (cb != null) { st.createdPanelView = cb.onCreatePanelView(st.featureId); } if (st.createdPanelView == null) { // Init the panel state's menu--return false if init failed if (st.menu == null) { if (!initializePanelMenu(st) || (st.menu == null)) { return false; } // Call callback, and return if it doesn't want to display menu if ((cb == null) || !cb.onCreatePanelMenu(st.featureId, st.menu)) { // Ditch the menu created above st.menu = null; return false; } } // Callback and return if the callback does not want to show the menu if (!cb.onPreparePanel(st.featureId, st.createdPanelView, st.menu)) { return false; } // Set the proper keymap KeyCharacterMap kmap = KeyCharacterMap.load(event != null ? event.getDeviceId() : 0); st.qwertyMode = kmap.getKeyboardType() != KeyCharacterMap.NUMERIC; st.menu.setQwertyMode(st.qwertyMode); } // Set other state st.isPrepared = true; st.isHandled = false; mPreparedPanel = st; return true; }
根据Callback 也即Activity的onCreatePanelView()方法的返回结果, 导致preparePanel返回不同的布尔值, 最终影响openPanel()方法的执行路径 。若返回false, 表示使用完全自定义的OptionMenu视图,openPanel()直接退出;否则使用系统的OptionMenu视图。
所以, 可以重写Activity的onCreatePanelView()方法提供一个完全自定义的OptionMenu视图
2. 示例
1. Java代码。 重写Activity的onCreatePanelView()方法。
public class CustomOptionMenuActivity extends Activity { @Override public View onCreatePanelView(int featureId) { // return super.onCreatePanelView(featureId); View v = getLayoutInflater().inflate( R.layout.activity_custom_option_menu, null); v.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { MyLog.i(""); Toast.makeText(CustomOptionMenuActivity.this, "text", Toast.LENGTH_SHORT).show(); CustomOptionMenuActivity.this.finish(); } }); return v; } }
2. 布局文件
<?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:text="TextView" android:id="@+id/textView1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="10dip"></TextView> </LinearLayout>
3. 截图
如上图, 点击Menu键后, 出现一个自定义OptionMenu。
发表评论
-
使用Intel HAXM为Android模拟器加速
2013-11-15 17:50 0http://www.tanranran.cn/?p ... -
load bitmap & process bitmap -training系列
2013-11-09 12:11 0http://docs.eoeandroid.com ... -
listview如何高亮显示选中的item
2013-11-03 11:33 0http://stackoverflow.com/qu ... -
ActionBarSharlock配合Navigation Drawer时遇到的小问题
2013-10-27 11:50 0http://stackoverflow.com ... -
Android navi drawer
2013-10-26 21:41 0https://developer.android.c ... -
cache bitmap & display bitmap- training系列
2013-10-26 10:25 0http://developer.android. ... -
博客排版技巧
2013-10-07 18:43 0CnBlogs博文排版技巧 http://www.cnbl ... -
android 传感器之摇一摇
2013-10-07 16:16 0http://blog.csdn.net/xn4545 ... -
android udp广播
2013-10-07 16:14 0http://blog.csdn.net/luzhen ... -
geofence功能
2013-10-07 12:18 0test -
android wifi模块分析
2013-10-04 19:58 0设置、打开wifi热点 http://blog.c ... -
简单试用Android Annotations(2)
2013-10-01 17:15 0一、命名问题 前一篇中提出了一个问题: ... -
简单试用Android Annotations
2013-10-01 11:58 3897参考:试用android annotations ... -
飞鸽协议
2013-09-30 15:13 0http://blog.chinaunix.net/ ... -
zxing二维码
2013-09-30 15:10 0Android之二维码的生成与解析 http://w ... -
android服务发现
2013-09-30 15:06 0不怎么样的博客 upnp研究 http://blog.c ... -
system bin目录下的命令
2013-09-30 13:27 0Android手机WIFI数据开关命令svc教程 h ... -
android jni相关
2013-09-24 14:03 0http://game.ceeger.com/S ... -
service的onStartCommand返回值
2013-09-21 12:16 0http://blog.csdn.net/fr ... -
action bar 2.3
2013-09-20 21:05 0ActionBarSherlock http ...
相关推荐
在Android应用开发中,菜单(OptionMenu)是一个重要的交互元素,它允许用户访问应用程序的主要功能。`Android 菜单(OptionMenu)大全`这个主题深入探讨了如何创建和使用OptionMenu,以及如何通过源码分析来理解其...
在Android应用开发中,菜单(OptionMenu)是用户界面中不可或缺的部分,它为用户提供了一种交互方式,使得用户可以通过点击菜单项执行相应的操作。本文将深入探讨如何在Android中创建和使用OptionMenu,以及与之相关...
总之,Android中的OptionMenu是应用程序提供用户交互的重要手段,通过编程的方式动态创建和管理,可以根据需求进行定制,提供丰富的功能选择。理解和熟练使用OptionMenu对于提升Android应用的用户体验至关重要。
下面是一个简单的`OptionMenu`使用示例: ```python from tkinter import * def show_selection(): print("选择的是:", selection.get()) root = Tk() selection = StringVar() option_menu = OptionMenu(root,...
OptionMenu是Android系统中一种常用的下拉选择菜单,它通常出现在ActionBar或Toolbar中,用于提供多个可选项供用户选择。在Android开发中,理解和熟练使用OptionMenu对于提升用户体验至关重要。下面我们将深入探讨...
在Android应用开发中,侧滑菜单(也称为抽屉式导航)是一种常见的设计模式,它允许用户通过从屏幕边缘向内滑动来显示附加的导航选项。在Android中,我们通常使用`NavigationView`和`DrawerLayout`这两个组件来实现...
在Android开发中,OptionMenu是应用界面中常见的一种交互元素,它通常出现在屏幕的顶部或者在菜单图标被点击后弹出,提供用户进行各种操作的选项。本篇将深入讲解如何使用XML来创建和管理OptionMenu,以实现更加灵活...
在Android开发中,OptionsMenu是一个非常重要的组件,它通常位于屏幕的顶部,用于显示应用程序的各种操作选项。在Android学习过程中,理解和掌握OptionsMenu的使用是至关重要的。这篇内容将深入解析OptionsMenu的...
在IT领域,特别是软件开发和用户界面设计中,`optionMenu`、`contextMenu`和`popupMenu`是三种常见的菜单类型,它们在提供用户交互和功能选择方面扮演着重要角色。下面将详细阐述这三个概念及其应用。 首先,`...
在Android开发中,`OptionsMenu`是用户界面中的一个重要组成部分,它通常出现在屏幕顶部的三个水平线(也称为汉堡菜单)或者在动作栏中。`OptionsMenu`允许开发者将不常用但必要的操作集中展示,以保持主界面的简洁...
在Android应用开发中,选项菜单(OptionMenu)是界面交互的重要组成部分,通常出现在屏幕的右上角或在设备具有物理菜单键的情况下。它为用户提供了一系列可点击的操作选项。本篇文章将详细阐述如何在Android中创建并...
android里使用menu,包括OptionMenu、ContextMenu、SubMenu,适合初学者,非常简单的代码,另外里面还附加了一个word文档教程,欢迎广大初学android的朋友下载使用!注释也很多的!
通过重写一系列代码,你将有机会深入了解并实践如何使用Android的一些核心组件,如按钮(Button)、文本输入框(EditText)、选项菜单(OptionMenu)以及标签(Tab)。此外,它还包含了一个简单的语音识别功能的实现,这是...
总之,"MyOptionMenu"源码为我们展示了如何在Android应用中定制OptionMenu,从创建菜单到处理点击事件,再到优化用户体验,都是Android开发者必备的技能。通过深入研究和实践,我们可以更好地理解和运用这些技术,...
### 智能家居系统中的选项菜单OptionMenu知识点解析 #### 一、选项菜单OptionMenu概述 在智能家居系统的开发过程中,选项菜单(OptionMenu)是一个非常重要的交互元素,它不仅能够提升用户界面的友好性,还能增强...
该代码展示了Android的选项菜单怎么用xml去实现 个人认为这种方式写optionsMenu菜单比较好,代码清晰 不需要去类里面定义那么多变量, 这里提供的是一个这样一个小功能的代码,给初学者使用的一个模块,高手请勿喷
1、在android Activity中重写onCreateOptionsMenu(),onOptionsItemSeclected() 与onCreateContextMenu()与onContextItemSelected()来实现OptionsMenu 与ContextMenu菜单。 2、子菜单的使用