<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    Calvin's Tech Space

    成于堅忍,毀于浮躁

       :: 首頁 :: 聯系 :: 聚合  :: 管理
    在Android界面的系統status bar上添加home,back,menu三個菜單,并完成對應的系統功能。并有higlight效果,修改status bar 高度和status bar上的文字尺寸。
    這需要修改android sdk才能完成,我用的是eclair.下面就我的操作進行敘述。
    1.首先完成界面顯示效果。
    需要修改文件
    ./frameworks/base/services/java/com/android/server/status/StatusBarPolicy.java,仿照mBatteryIcon等icon的添加方式添加自定義的icon,圖片名稱指定就好了。另外還要記得修改./frameworks/base/core/res/res/values/arrays.xml,這里定義了icon的slot,并且決定了icon的擺放順序。
    這樣,你需要的icon按鍵就可以顯示在系統的status bar上面了。

    2.判斷touch event是否按動了某個icon
    需要修改的文件
    ./frameworks/base/services/java/com/android/server/status/StatusBarView.java
    首先在onTouchEvent函數中,獲取當前event的坐標,然后比較是否在某個按鍵范圍之內。由于系統對于statusBar的范圍已經有了定義,所以這里只需要比較橫坐標就可以了。
    其次,也是這一步最關鍵的,怎么獲取具體某一個icon的左右邊界坐標呢?系統的status bar左邊顯示的圖標都是notification, 右邊顯示的是系統icon. 也就是說左邊icon屬于mNotificationIcons,右邊的icon屬于mStatusIcons. 在文件StatusBarView.java中出現的offset = getViewOffset(mStatusIcons),得到mStatusIcons的最左邊的icon的left橫坐標。用N = mStatusIcons.getChildCount()得到共有幾個系統icon,其中包含visibility為false的icons.用mStatusIcons.getChildAt(N-i)得到的是從右邊數第i個的icon view. 這個view的getLeft()+offset就是這第i個icon的左邊橫坐標,對應的getRight()+offset就是這第i個icon的右邊橫坐標。本例中home鍵是右邊第2個icon.

    3.定義icon響應事件
    這里使用的方法是在StatusBarView.java中向
    ./frameworks/base/services/java/com/android/server/status/StatusBarPolicy.java發送一個Broadcast,讓StatusBarPolicy來完成具體的事件操作。這里需要注意的是不僅要在./frameworks/base/core/java/android/content/Intent.java中定義intent,還要在StatusBarPolicy的構造函數中添加該intent的過濾動作,即filter.addAction(Intent.ACTION_BACKICON_CHANGED).例如,按動了back鍵,如果當前事件為action_up,就向系統發送一個keyEvent,keyCode為KeyEvent.KEYCODE_BACK. 這里借用的是./frameworks/base/cmds/input/src/com/android/commands/input/Input.java中的sendKeyEvent函數,直接拷貝過來,按照需要稍微修改一下形參就可以了,過程不要修改。
    需要說明的是,當點擊statusBar可以拉出來一個notification列表,當這個列表顯示出來的時候,這三個back, menu, home鍵的響應速度會非常慢,所以這時不響應事件并隱藏這三個鍵。具體做法是在StatusBarView的onTouchEvent()中判斷mService.mExpanded或者 mService.mTracking為真時就不做響應。mService是StatusBarService對象。隱藏三個鍵也是用Broadcast來做的,但這個intent是由StatusBarServie發出來的,當mExpandedVisible = false時顯示,當mExpandedVisible = true時隱藏。
    這里還同時完成了highlight換圖的動作,也是用Broadcast來做得,處理過程一樣,就是需要區分action_down和action_up就可以了。

    4.調整status bar的高度
    如果你需要顯示較大的屏幕尺寸,同時statusBar的高度要拉大,上面的icon的size也需要調大。為了協調一致,顯示時間的字體和notification顯示的日期的字體也需要調大。具體做法如下:
    a.調節status bar icon的size: 只調節status_bar.xml的textSize標簽似乎不起作用,同時又修改了./base/services/java/com/android/server/status/StatusBarIcon.java的t.setTextSize(32);語句才成功。不知道修改status_bar.xml的標簽下的layout_height值是不是必須的,反正我是一起都給改了。
    b.調節status bar height: ./base/core/res/res/values/dimens.xml 找得我好辛苦!不知道還需不需要修改./base/core/res/res/values/themes.xml中的Window attributes的windowTitleSize值,反正我也給改了。
    c.調節notification顯示日期字體的大小,修改status_bar.xml的的textSize值。
    到這里,就完成了所有工作,看看效果吧。

    http://blog.csdn.net/shiningmm/archive/2010/04/08/5461506.aspx
    posted on 2010-06-09 00:24 calvin 閱讀(3749) 評論(4)  編輯  收藏 所屬分類: Android

    Feedback

    # re: Android statusBar添加back,home,menu按鈕 2010-06-22 23:07 費工夫
    呵呵呵  回復  更多評論
      

    # re: Android statusBar添加back,home,menu按鈕 2010-06-22 23:08 費工夫
    輔導費  回復  更多評論
      

    # re: Android statusBar添加back,home,menu按鈕 2010-06-22 23:11 與桑
    你好:你實現過這個功能是吧?很不錯!我也在學習這個東西。沒有實現!你能給我發一下你的工程代碼嗎?十分感激!郵箱wrhw214@gmail.com
    QQ :307594397.再次謝謝你!  回復  更多評論
      

    # re: [轉]Android statusBar添加back,home,menu按鈕 2010-10-19 19:51 王東林
    內容很籠統,我實現過,目前是音量遞增跟遞減以及home鍵極限操作優化了一下不會出現死機現象,其他的比如back跟menu如果頻繁點擊就會刷新不過來,死機  回復  更多評論
      

    主站蜘蛛池模板: 久久这里只精品国产免费10| 国产免费区在线观看十分钟| 久久国产免费福利永久| 国产成A人亚洲精V品无码| 国产乱妇高清无乱码免费| 国产亚洲AV手机在线观看| 中文无码日韩欧免费视频| 国产亚洲av片在线观看播放 | 午夜成人免费视频| 亚洲av乱码一区二区三区| 免费毛片在线看片免费丝瓜视频| 亚洲一区二区三区免费在线观看| 国产精品成人免费福利| 亚洲综合小说另类图片动图| 香蕉高清免费永久在线视频| 特级毛片全部免费播放| 久久精品国产亚洲7777| 污污网站18禁在线永久免费观看| 亚洲综合小说久久另类区| 成人影片麻豆国产影片免费观看 | 亚洲精品视频免费看| 永久免费AV无码国产网站| 亚洲国产日韩a在线播放| 凹凸精品视频分类国产品免费| 一本岛v免费不卡一二三区| 亚洲成AV人片天堂网无码| 91免费播放人人爽人人快乐| 亚洲av无码专区青青草原| 亚洲自偷自偷图片| 久草视频在线免费| 黄页网站在线观看免费| 亚洲成a人片在线观看日本| 色窝窝免费一区二区三区 | 亚洲视频在线观看网址| 女人张开腿等男人桶免费视频| 四虎影视在线看免费观看| 亚洲一区二区三区日本久久九| 1024免费福利永久观看网站| 欧亚一级毛片免费看| 亚洲成人福利在线| 亚洲国产日韩在线观频|