`
runfeel
  • 浏览: 935628 次
文章分类
社区版块
存档分类
最新评论

向android 的状态栏中加入快捷按钮(home,back,menu等等)的方法(续)

 
阅读更多

上一篇文章中谈到的加入快捷按钮的方法,实际上还是太过麻烦。那篇博客是在我刚接触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快捷键的方法

    在android的状态栏(statusbar)中增加menu,home和back快捷键的方法 framework里 修改的

    对在Android的状态栏添加Menu,Back,Home的改进

    总的来说,为Android状态栏添加Menu、Back、Home按钮是一种提高用户体验的方式,但实现时需考虑系统的限制和可能存在的问题。通过处理Intent响应和使用动画效果,可以有效地解决实际使用中的问题,为用户提供更自然...

    Android statusBar添加back,home,menu按钮

    在Android原生设计中,back、home和menu按钮通常位于屏幕底部的系统导航栏上。将这些功能移至StatusBar可能是为了特定的用户界面需求或自定义ROM的开发。下面,我们将详细探讨如何在Android 2.3中实现这一功能。 1....

    Android自定义标题栏(并加入返回按钮)demo

    本文将深入探讨如何在Android中创建一个自定义的标题栏,并且添加一个返回按钮。我们将通过以下几个步骤来实现这个功能: 1. **创建布局文件**: 首先,我们需要为标题栏创建一个新的XML布局文件。在这个文件中,...

    安卓Android工具栏刷新按钮的动画旋转效果实现

    在安卓(Android)应用开发中,用户界面的交互体验至关重要,而刷新按钮的动画效果是提升用户体验的一个关键因素。在本教程中,我们将探讨如何在Android工具栏中实现一个点击后由单箭头变为旋转圆圈的刷新按钮动画...

    android监听返回按钮事件的方法

    此外,如果希望在其他地方处理返回事件,例如在Fragment中,可以使用`onOptionsItemSelected()`方法监听`OptionsItemSelectedEvent`,并检查`MenuItem`的`itemId`是否为`android.R.id.home`,这代表了应用栏中的返回...

    android 全局悬浮按钮实现key事件

    在Android开发中,全局悬浮按钮(通常称为Float Button或Floating Action Button, FAB)是一种设计模式,用于提供主要的操作或快捷方式。这种按钮通常显示为圆形,并且可以在屏幕的任何位置浮动,允许用户快速访问...

    Android标题栏中添加返回按钮功能

    在Android应用开发中,标题栏(Toolbar或者ActionBar)是用户界面的重要组成部分,它通常包含应用的标识、操作菜单以及返回按钮。返回按钮尤其关键,因为它提供了用户导航到上级页面的功能,使得用户能够轻松地在...

    android知识类讲解

    ### Android状态栏(Status Bar)自定义添加Menu、Home与Back快捷键详解 #### 背景介绍 在Android操作系统中,状态栏(Status Bar)主要显示时间、电池电量、信号强度等基本信息,并且通常用于展示应用程序的通知。...

    Android代码-android-dropdown-menu

    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系统中,Home键、菜单键(在某些设备上是多任务键)和返回键是用户界面的重要组成部分,它们提供了导航和操作的基本方式。然而,在特定的应用场景下,如开发特殊应用或游戏时,开发者可能需要屏蔽这些系统...

    Android自定义标题栏

    在Android应用开发中,自定义标题栏(ActionBar或者Toolbar)是一项常见的需求,它可以让应用程序具有独特的界面风格,提升用户体验。Android系统默认提供了标题栏(ActionBar)功能,但往往无法满足开发者的所有...

    android4.0 移除导航栏

    在Android系统中,导航栏是用户界面不可或缺的一部分,通常包含BACK、HOME和RECENT(最近应用)这三个关键按钮,为用户提供基本的操作导航。在Android 4.0(Ice Cream Sandwich)版本中,虽然这个功能是默认存在的且...

    Android动态显示隐藏底部导航栏

    在Android4.2.2中,导航栏(也就是屏幕底部的三个按钮,home,back,recentapp)是系统应用SystemUi.apk的一部分,简言之,我们的需求就是让我们的app来控制SystemUi.apk,达到动态显示隐藏屏幕底部导航栏的效果。...

    Android项目中自定义顶部标题栏

    在Android应用开发中,自定义顶部标题栏是一个常见的需求,它可以提供独特的用户界面风格和功能。下面我们将深入探讨如何在Android项目中实现自定义标题栏,包括定义标题栏布局、自定义TitleActivity以及实现在标题...

    Android监听Home键和Back键的区别介绍

    一:Android 中Home键监听和Back键监听的区别: (1).在Android中,当按下Home键的时候,默认情况下Stop前台的Activity,即Activity设置成停止状态【onStop()】,而不是销毁状态【onDestory()】。如果再次启动该...

    Android密码锁屏的实现,解决Home,Back问题

    Android系统默认情况下,Home键会将当前Activity放到后台,而Back键则会返回上一个Activity。为了阻止这些行为,我们需要重写onKeyDown()方法,捕获这两个按键的事件,并阻止其默认行为。代码示例如下: ```java @...

    Android Studio记事本工程的add、save、back和delete按钮图标

    Android Studio记事本工程的add、save、back和delete按钮图标,主要应用于activity_main和notepad_item_layout文件中,运行之后点击按钮图标实现简单的记事本增删改查功能,图标正规而且完整,绝对独树一帜。

    屏蔽Home+Back键

    在Android中,可以重写Activity的`onKeyDown()`和`onKeyUp()`方法,检测Keycode为`KEYCODE_HOME`(Home键)和`KEYCODE_BACK`(Back键)的按键事件。当检测到这些事件时,我们可以选择不执行默认行为,即阻止它们的...

Global site tag (gtag.js) - Google Analytics