今天开始研究ADW的Launcher了,加油加油···
先从ADW主界面按menu按键开始,涉及以下3个方法:
1、onCreateOptionsMenu(Menu menu)
2、onPrepareOptionsMenu(Menu menu)
3、onOptionsItemSelected(MenuItem item)
分别解释一下:
方法名 | 触发时间 | 如何更新 |
onCreateOptionsMenu | 进入Launcher后第一次点MENU按钮时触发 | 1、切换语言,android在选择不同的语言之后会调用IActivityManager的实例updateConfiguration。2、kill掉ADW的Launcher也行。 |
onPrepareOptionsMenu | 有两种情况:1、进入Launcher后第一次点MENU按钮触发onCreateOptionsMenu后调用;2、经过第一步,以后每次点MENU按钮时都会触发 | 点击MENU触发 |
onOptionsItemSelected | 选择MENU里面的任意内容后触发 | 点击NEMU里的任意选项 |
三段代码如下:
onCreateOptionsMenu(Menu menu)
@Override
public boolean onCreateOptionsMenu(Menu menu) {
if (mDesktopLocked && mSavedInstanceState == null) return false;
super.onCreateOptionsMenu(menu);
menu.add(MENU_GROUP_ADD, MENU_ADD, 0, R.string.menu_add)
.setIcon(android.R.drawable.ic_menu_add)
.setAlphabeticShortcut('A');
menu.add(MENU_GROUP_NORMAL, MENU_WALLPAPER_SETTINGS, 0, R.string.menu_wallpaper)
.setIcon(android.R.drawable.ic_menu_gallery)
.setAlphabeticShortcut('W');
menu.add(MENU_GROUP_NORMAL, MENU_SEARCH, 0, R.string.menu_search)
.setIcon(android.R.drawable.ic_search_category_default)
.setAlphabeticShortcut(SearchManager.MENU_KEY);
menu.add(MENU_GROUP_NORMAL, MENU_NOTIFICATIONS, 0, R.string.menu_edit)
.setIcon(android.R.drawable.ic_menu_edit)
.setAlphabeticShortcut('E');
final Intent settings = new Intent(android.provider.Settings.ACTION_SETTINGS);
settings.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK |
Intent.FLAG_ACTIVITY_RESET_TASK_IF_NEEDED);
menu.add(MENU_GROUP_NORMAL, MENU_SETTINGS, 0, R.string.menu_settings)
.setIcon(android.R.drawable.ic_menu_preferences).setAlphabeticShortcut('P')
.setIntent(settings);
//ADW: add custom settings
menu.add(MENU_GROUP_NORMAL, MENU_ALMOSTNEXUS, 0, R.string.menu_adw_settings)
.setIcon(android.R.drawable.ic_menu_preferences)
.setAlphabeticShortcut('X');
menu.add(MENU_GROUP_CATALOGUE, MENU_APP_GRP_CONFIG, 0, R.string.AppGroupConfig)
.setIcon(android.R.drawable.ic_menu_agenda);
//menu.add(MENU_GROUP_CATALOGUE, MENU_APP_GRP_RENAME, 0, R.string.AppGroupRename)
// .setIcon(R.drawable.ic_menu_notifications);
menu.add(MENU_GROUP_CATALOGUE, MENU_APP_SWITCH_GRP, 0, R.string.AppGroupChoose)
.setIcon(android.R.drawable.ic_menu_manage);
menu.add(MENU_GROUP_CATALOGUE, MENU_APP_DELETE_GRP, 0, R.string.AppGroupDel)
.setIcon(android.R.drawable.ic_menu_delete);
return true;
}
onPrepareOptionsMenu(Menu menu)
@Override
public boolean onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
if(mIsEditMode || mIsWidgetEditMode)return false;
// We can't trust the view state here since views we may not be done binding.
// Get the vacancy state from the model instead.
mMenuAddInfo = mWorkspace.findAllVacantCellsFromModel();
menu.setGroupVisible(MENU_GROUP_ADD, mMenuAddInfo != null && mMenuAddInfo.valid && (!allAppsOpen) );
menu.setGroupVisible(MENU_GROUP_NORMAL, !allAppsOpen);
menu.setGroupVisible(MENU_GROUP_CATALOGUE, allAppsOpen);
return true;
}
onOptionsItemSelected(MenuItem item)
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case MENU_ADD:
addItems();
return true;
case MENU_WALLPAPER_SETTINGS:
startWallpaper();
return true;
case MENU_SEARCH:
onSearchRequested();
return true;
case MENU_NOTIFICATIONS:
//showNotifications();
//ADW: temp usage for desktop eiting
if(allAppsOpen)closeAllApps(false);
startDesktopEdit();
return true;
case MENU_ALMOSTNEXUS:
showCustomConfig();
return true;
case MENU_APP_GRP_CONFIG:
showAppList();
return true;
case MENU_APP_GRP_RENAME:
showNewGrpDialog();
return true;
case MENU_APP_SWITCH_GRP:
showSwitchGrp();
return true;
case MENU_APP_DELETE_GRP:
showDeleteGrpDialog();
return true;
}
return super.onOptionsItemSelected(item);
}
解释下一些方法,便于记忆:
代码中用到的方法用绿色标注,官方解释为红色,我的理解为蓝色。
menu.add(MENU_GROUP_ADD, MENU_ADD, 0, R.string.menu_add)
.setIcon(android.R.drawable.ic_menu_add)
.setAlphabeticShortcut('A');
MenuItem android.view.Menu.add(int groupId, int itemId, int order, int titleRes)
Variation on add(int, int, int, CharSequence) that takes a string resource identifier instead of the string itself.
参数:
groupId The group identifier that this item should be part of. This can also be used to define groups of items for batch state changes. Normally use NONE if an item should not be in a group.
itemId Unique item ID. Use NONE if you do not need a unique ID.
order The order for the item. Use NONE if you do not care about the order. See MenuItem.getOrder().
titleRes Resource identifier of title string.
返回:
The newly added menu item.
groupId:分组ID
itemId:各项自己的UID
order:我理解为目录,还没具体看
titleRes:显示文本信息
setIcon方法:设置文字上方的图标
setAlphabeticShortcut方法:在MENU菜单下的快捷键,不是全键盘的机子几乎不会用到的。
menu.setGroupVisible(MENU_GROUP_ADD, mMenuAddInfo != null && mMenuAddInfo.valid && (!allAppsOpen) );
void android.view.Menu.setGroupVisible(int group, boolean visible)
Show or hide all menu items that are in the given group.
参数:
group The group of items to operate on.
visible If true the items are visible, else they are hidden.
另请参阅:
MenuItem.setVisible
设置各个groupId组是够显示的方法
group:其实就是android.view.Menu.add里面的groupId
visible:是否显示该组
以后想到什么再更新吧。
分享到:
相关推荐
ADW.Launcher.v1.3.6.apk ADW.Launcher.v1.3.6.apk ADW.Launcher.v1.3.6.apk ADW.Launcher.v1.3.6.apk ADW.Launcher.v1.3.6.apk ADW.Launcher.v1.3.6.apk ADW.Launcher.v1.3.6.apk
Oracle Autonomous Data Warehouse (ADW) 是Oracle云服务中的一款完全托管的数据仓库解决方案,它提供了高效、自动化的数据处理和分析能力。本操作手册将引导您完成在Oracle Cloud Infrastructure (OCI) 上搭建和...
通过深入研究ADW.Launcher的源码,开发者可以学习到如何设计和实现一个高度定制的Android启动器,这对于提升Android开发技能和理解系统底层运作非常有帮助。同时,源码阅读也能培养问题解决能力和代码调试技巧,对于...
ADW手机.apk
org.adw.launcher_donut.apk
在下载的压缩包中,包含了多个分卷文件:`ADW_Launcher.part1.rar` 至 `ADW_Launcher.part5.rar`,这些是大文件分割后的部分,需要全部下载并使用解压工具(如WinRAR或7-Zip)合并成完整的源码包。其中,`classes....
ADW.Launcher是一款非常受欢迎的第三方Android启动器,它的1.3.3.8版本经过精心汉化,使得非英语用户也能轻松理解和使用。该版本不仅保留了原版的诸多优点,还特别注重了中文用户的使用习惯和需求,极大地提升了使用...
ADW桌面,全称为ADW.Launcher,是一款经典的第三方Android启动器。它在早期安卓系统时代非常流行,尤其受到那些希望自定义手机界面和提升性能的用户喜爱。作为旧版ADW桌面,它的主要特点是轻量级和优化,使得在低...
这份“ADW Launcher源码+用到的classes.jar 完整”包含了ADW Launcher的完整源代码和一个名为`classes.jar`的Java类库,是深入理解Android应用开发,特别是启动器开发的重要学习资料。 首先,ADW Launcher源码中...
这个控制台提供了直观的界面,让用户能够轻松地创建、配置、监控和管理ADW实例。在视频中,可能会涵盖以下几个方面的内容: 1. **ADW实例创建**:如何在 OCI 控制台上设置和启动一个新的ADW实例,包括选择适当的...
总之,`adw.rar_shell mysql`这个资源提供了一个学习shell脚本与MySQL数据库交互的实例,对于想要提升Linux系统管理和数据库操作技能的IT从业者来说,这是一个宝贵的资料。通过分析和实践这个脚本,你可以更好地理解...
adw一款安卓桌面软件,个性方便而且大方
cadence adw设计数据治理平台[资料].docxcadence adw设计数据治理平台[资料].docxcadence adw设计数据治理平台[资料].docxcadence adw设计数据治理平台[资料].docxcadence adw设计数据治理平台[资料].docxcadence ...
ADW桌面
模拟ADW_Launcher中SliderView的滑动操作以及可随意拖动图片的实现。模拟ADW_Launcher中SliderView的滑动操作以及可随意拖动图片的实现。对应的文章为:...
Oracle ADW提供的详细分析和机器学习功能,帮助AsiaPay理解市场变化,支持创新支付方式,同时,其自治安全和修复功能确保了数据的安全,增强了团队的信心。 Oracle ADW的关键特性包括: 1. 自治性:自我管理、自我...
它为开发Windows应用程序提供了面向对象的框架,包括窗口、菜单、控件等元素的封装。在MFC中,控件如Static通常继承自CWnd类,我们可以通过派生自CStatic类来扩展其功能。 动态修改Static控件内容的关键在于理解和...
"ADW Source Code"是指ADW.Launcher的源代码,这是一个开源的桌面启动器项目,主要用于Android系统。它提供了自定义和个性化用户界面的能力,让Android用户可以根据自己的喜好调整手机或平板电脑的主屏幕布局、图标...
"adw"可能是为某个特定目的(如自动化、数据科学、机器学习等)设计的,但具体功能需要查看其文档或源代码才能得知。 由于提供的信息有限,无法详细描述"adw"库的具体功能和用法。通常,一个Python库的详细信息会...
ADW2XX系列导轨式多回路电力仪表是电力物联网技术在传统电力行业的具体应用,它整合了电力测量、计量、保护等仪表功能,并利用物联网技术,实现了远程监控和管理,大大简化了传统电力系统的组网和调试过程。...