上一篇文章中谈到的加入快捷按钮的方法,实际上还是太过麻烦。那篇博客是在我刚接触android源代码没几天时,参考网上的介绍方法,自己看了下源代码尝试着写了一个。 不过那个方法,是我直接用贴图的方法实现了按钮特效,这实在是太浪费了,最近一直仍有朋友问我那篇文章中的问题,我想还是重写一下,用一个更简单点的方法,直接使用android的ImageButton控件,通过其OnTouchListener方法操作即可,Button的高亮与否完全由系统处理,这样也不会出现button高亮不消失的bug。以下方法在android 2.1 上编译调试通过
1。 准备资源,修改XML文件
和上篇文章一样,准备几张图,这里我们准备添加home back和menu图标,就需要准备6张图,三张普通状态,三张按下的高亮状态图标:
stat_home.png
stat_home_pressed.png
stat_back.png
stat_back_pressed.png
stat_menu.png
stat_menu_pressed.png
同时,在 Frameworks/base/core/res/res/drawable下创建三个imageButton的xml文件:
xml_stat_home.xml
xml_stat_back.xml
xml_stat_menu.xml
修改status_bar.xml,如下:
如上篇,修改statusbar的高度,编译一下,即可看到效果。
2。 添加按钮的动作效果
在statusBarView.java中,活的button的handler
类中新增加三个成员:
增加三个常量:
public static final int RESV_KEY_HOME = KeyEvent.KEYCODE_HOME;
public static final int RESV_KEY_BACK = KeyEvent.KEYCODE_BACK;
public static final int RESV_KEY_MENU = KeyEvent.KEYCODE_MENU;;
在onFinishInflate中,获取几个button 的handler,并设置touch事件,添加如下代码:
各button的touch事件添加如下:
也就是简单的广播一个intent消息给statusBarPolicy处理。
为防止点击statusBar上的按钮, 触发标题栏的expend事件, 修改一下函数onInterceptTouchEvent,点击到不属于button区域时才允许解析Motion的event:
修改StatusBarService.java,发送Intent消息需要content,这个目前只能在StatusBarService中添加一个方法:
要发送intent,需要自己添加Intent:
在framework/base/core/java/android/content/intent.java中增加
接收并处理intent, 如前篇:
接收并处理intent
这个就要修改StatusBarPolicy.java了
首先,在构造函数中加入Intent的filter,注册号这个intent的receiver。
然后再private BroadcastReceiver mIntentReceiver = new BroadcastReceiver() 加入Intent的receiver动作;
及处理函数:
3. StatusBar通知栏屏蔽按钮
当拉出expand的通知栏时,按钮的响应非常慢,这时最好将按钮给屏蔽掉,我们在 statusBarView.java中增加两个方法:
拉出或收回通知栏中,就可以调用这个函数来显示或隐藏这几个按钮。
修改文件: statusBarService.java
分享到:
相关推荐
在android的状态栏(statusbar)中增加menu,home和back快捷键的方法 framework里 修改的
总的来说,为Android状态栏添加Menu、Back、Home按钮是一种提高用户体验的方式,但实现时需考虑系统的限制和可能存在的问题。通过处理Intent响应和使用动画效果,可以有效地解决实际使用中的问题,为用户提供更自然...
在Android原生设计中,back、home和menu按钮通常位于屏幕底部的系统导航栏上。将这些功能移至StatusBar可能是为了特定的用户界面需求或自定义ROM的开发。下面,我们将详细探讨如何在Android 2.3中实现这一功能。 1....
本文将深入探讨如何在Android中创建一个自定义的标题栏,并且添加一个返回按钮。我们将通过以下几个步骤来实现这个功能: 1. **创建布局文件**: 首先,我们需要为标题栏创建一个新的XML布局文件。在这个文件中,...
在安卓(Android)应用开发中,用户界面的交互体验至关重要,而刷新按钮的动画效果是提升用户体验的一个关键因素。在本教程中,我们将探讨如何在Android工具栏中实现一个点击后由单箭头变为旋转圆圈的刷新按钮动画...
此外,如果希望在其他地方处理返回事件,例如在Fragment中,可以使用`onOptionsItemSelected()`方法监听`OptionsItemSelectedEvent`,并检查`MenuItem`的`itemId`是否为`android.R.id.home`,这代表了应用栏中的返回...
在Android开发中,全局悬浮按钮(通常称为Float Button或Floating Action Button, FAB)是一种设计模式,用于提供主要的操作或快捷方式。这种按钮通常显示为圆形,并且可以在屏幕的任何位置浮动,允许用户快速访问...
在Android应用开发中,标题栏(Toolbar或者ActionBar)是用户界面的重要组成部分,它通常包含应用的标识、操作菜单以及返回按钮。返回按钮尤其关键,因为它提供了用户导航到上级页面的功能,使得用户能够轻松地在...
### Android状态栏(Status Bar)自定义添加Menu、Home与Back快捷键详解 #### 背景介绍 在Android操作系统中,状态栏(Status Bar)主要显示时间、电池电量、信号强度等基本信息,并且通常用于展示应用程序的通知。...
android-dropdown-menu An dropdown menu for android, you can attach your own listView(s) with this. 文档 DropdownMenu Demo Usage You can use this to make several(as you want) listViews act like ...
在Android系统中,Home键、菜单键(在某些设备上是多任务键)和返回键是用户界面的重要组成部分,它们提供了导航和操作的基本方式。然而,在特定的应用场景下,如开发特殊应用或游戏时,开发者可能需要屏蔽这些系统...
在Android应用开发中,自定义标题栏(ActionBar或者Toolbar)是一项常见的需求,它可以让应用程序具有独特的界面风格,提升用户体验。Android系统默认提供了标题栏(ActionBar)功能,但往往无法满足开发者的所有...
在Android系统中,导航栏是用户界面不可或缺的一部分,通常包含BACK、HOME和RECENT(最近应用)这三个关键按钮,为用户提供基本的操作导航。在Android 4.0(Ice Cream Sandwich)版本中,虽然这个功能是默认存在的且...
在Android4.2.2中,导航栏(也就是屏幕底部的三个按钮,home,back,recentapp)是系统应用SystemUi.apk的一部分,简言之,我们的需求就是让我们的app来控制SystemUi.apk,达到动态显示隐藏屏幕底部导航栏的效果。...
在Android应用开发中,自定义顶部标题栏是一个常见的需求,它可以提供独特的用户界面风格和功能。下面我们将深入探讨如何在Android项目中实现自定义标题栏,包括定义标题栏布局、自定义TitleActivity以及实现在标题...
一:Android 中Home键监听和Back键监听的区别: (1).在Android中,当按下Home键的时候,默认情况下Stop前台的Activity,即Activity设置成停止状态【onStop()】,而不是销毁状态【onDestory()】。如果再次启动该...
Android系统默认情况下,Home键会将当前Activity放到后台,而Back键则会返回上一个Activity。为了阻止这些行为,我们需要重写onKeyDown()方法,捕获这两个按键的事件,并阻止其默认行为。代码示例如下: ```java @...
Android Studio记事本工程的add、save、back和delete按钮图标,主要应用于activity_main和notepad_item_layout文件中,运行之后点击按钮图标实现简单的记事本增删改查功能,图标正规而且完整,绝对独树一帜。
在Android中,可以重写Activity的`onKeyDown()`和`onKeyUp()`方法,检测Keycode为`KEYCODE_HOME`(Home键)和`KEYCODE_BACK`(Back键)的按键事件。当检测到这些事件时,我们可以选择不执行默认行为,即阻止它们的...