如何交换原生Android 6.0状态栏的安卓6.0.1电量百分比比和电池图标的位置

查看: 4648|回复: 11
人气24 技术10 资源10 推广0 帮助45 威望0 最后登录精华0UID9580023阅读权限40帖子积分702金币761 注册时间
A4.安卓机器猫, 积分 702, 距离下一级还需 148 积分
积分702金币761 注册时间
本帖最后由 ComeOutToMix 于
22:50 编辑
刷的so.eight大的白色状态栏,一直用的电量图标,今天心血来潮选个数字电量显示,发现数字还是白色的,本身状态栏就是白的,看不清。求修改方法,请问是修改systemUI还是Framework-res?是图片样式的还是要改xml文件?请大大们给个意见,谢谢。
另外还有一个问题就是通话记录里面的电话点开后显示在上部的通话时间那些详细信息颜色是黑色的但是那一栏背景是灰色的,也看不清楚,请问这个是要修改什么?
现在手机截的图不行,不发上来了,晚上回家再看看要不要上图。
19:45:00 上传
19:45:00 上传
安卓论坛 - 论坛版权1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关
2、本站所有主题由该帖子作者发表,该帖子作者与享有帖子相关版权
3、其他单位或个人使用、转载或引用本文时必须同时征得该帖子作者和的同意
4、帖子作者须承担一切因本文发表而直接或间接导致的民事或刑事法律责任
5、本帖部分内容转载自其它媒体,但并不代表本站赞同其观点和对其真实性负责
6、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
7、管理员和版主有权不事先通知发贴者而删除本文
人气24 技术10 资源10 推广0 帮助45 威望0 最后登录精华0UID9580023阅读权限40帖子积分702金币761 注册时间
A4.安卓机器猫, 积分 702, 距离下一级还需 148 积分
积分702金币761 注册时间
人工置顶,手机发帖不容易,手机在线等也不容易呀。来个技术控吧,一般能用替换法改的东西我都自己研究,不碰到难题也不好意思出来问哇……
人气24 技术10 资源10 推广0 帮助45 威望0 最后登录精华0UID9580023阅读权限40帖子积分702金币761 注册时间
A4.安卓机器猫, 积分 702, 距离下一级还需 148 积分
积分702金币761 注册时间
大大们都去哪了?
人气24 技术10 资源10 推广0 帮助45 威望0 最后登录精华0UID9580023阅读权限40帖子积分702金币761 注册时间
A4.安卓机器猫, 积分 702, 距离下一级还需 148 积分
积分702金币761 注册时间
等了一下午都没人来,求高手。
人气24 技术10 资源10 推广0 帮助45 威望0 最后登录精华0UID9580023阅读权限40帖子积分702金币761 注册时间
A4.安卓机器猫, 积分 702, 距离下一级还需 148 积分
积分702金币761 注册时间
今晚能不能有所收获……
人气24 技术10 资源10 推广0 帮助45 威望0 最后登录精华0UID9580023阅读权限40帖子积分702金币761 注册时间
A4.安卓机器猫, 积分 702, 距离下一级还需 148 积分
积分702金币761 注册时间
难道小ME区已成鬼区。。。
人气36 技术6 资源5 推广0 帮助81 威望0 最后登录精华0UID610689阅读权限40帖子积分836金币1060 注册时间
A4.安卓机器猫, 积分 836, 距离下一级还需 14 积分
积分836金币1060 注册时间
这里应该是反编译ui.apk然后再在里面去修改代码
人气165 技术53 资源59 推广2 帮助381 威望3 最后登录精华0UID3873882阅读权限70帖子积分4555金币5285 注册时间
A7.安卓怪杰, 积分 4555, 距离下一级还需 945 积分
积分4555金币5285 注册时间
本帖最后由 ♠ 潇洒哥 于
21:27 编辑
怎么可以说成这样,第一个,建议换个电池图标,如需改数字颜色,需反编译s.apk.具体路径,需要找。
第二个 关于那个黑色背景,是图片,应该在Contacts.apk.apk里面,具体是哪个,明天帮你看看,现在电脑关了。
人气24 技术10 资源10 推广0 帮助45 威望0 最后登录精华0UID9580023阅读权限40帖子积分702金币761 注册时间
A4.安卓机器猫, 积分 702, 距离下一级还需 148 积分
积分702金币761 注册时间
怎么可以说成这样,第一个,建议换个电池图标,如需改数字颜色,需反编译s.apk.具体路径,需要找。
第二个 关于那个黑色背景,是图片,应该在Contacts.apk.apk里面,具体是哪个,明天帮你看看,现在电脑关了。
<font color="#2121555@qq.co 发表于
谢谢潇洒哥搭理,不是电池图标的问题,是选择百分比电量显示的时候,选择默认的图标模式时是正常的Framework-res里面的图标文件,当选百分比显示的时候就那样了。。。
另外我不是要改黑色背景,是想改那些字的颜色,都改成白的就好了。。。。。
人气0 技术0 资源0 推广0 帮助0 威望0 最后登录精华0UID7153620阅读权限10帖子积分16金币0 注册时间
A1.安卓人工智能, 积分 16, 距离下一级还需 34 积分
积分16金币0 注册时间
gamdjupgjmpjmgtjtgpjpj
Powered by2595人阅读
边看边写(1)
Android version : 5.0
Author :iceBear
date&&&& :
Android 5.0对状态栏做了一定改动,电池图标默认不再有数字形式。但在下拉菜单中,图标旁边会有一个数字&#26684;式的电量显示。电量变化时,数字会变化;通常每当电量降低10%后,图标会变化。本文对这个流程做简单的分析,先说数字形式的。
数字形式的图标包含在布局文件Status_bar_expanded_header.xml (\frameworks\base\packages\systemui\res\layout)中,
&TextView android:id=&@+id/battery_level&
android:layout_width=&wrap_content&
android:layout_height=&wrap_content&
android:layout_gravity=&center_vertical&
android:layout_marginStart=&@dimen/header_battery_margin_expanded&
android:paddingEnd=&@dimen/battery_level_padding_end&
android:textColor=&#ffffff&
android:textSize=&@dimen/battery_level_text_size&
android:importantForAccessibility=&noHideDescendants&/&
并在StatusBarHeaderView.java (\frameworks\base\packages\systemui\src\com\android\systemui\statusbar\phone)中被获取。
mBatteryLevel = (TextView) findViewById(R.id.battery_level);每当电量变化时,数字会变化。
public void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging) {//传进来的level即是当时的电量
mBatteryLevel.setText(getResources().getString(R.string.battery_level_template, level));
}但是onBatteryLevelChanged()又是如何得知电量的变化的呢?
是因为StatusBarHeaderView实现了BatteryController.BatteryStateChangeCallback接口。
public interface BatteryStateChangeCallback {
void onBatteryLevelChanged(int level, boolean pluggedIn, boolean charging);
void onPowerSaveChanged();
而它又通过setBatteryController() 关联了一个batteryController对象;
public void setBatteryController(BatteryController batteryController) {
mBatteryController = batteryC//自己的catteryController
((BatteryMeterView) findViewById(R.id.battery)).setBatteryController(batteryController);
//图标电量的controller,
//注意这个是下拉菜单中的图标,而不是状态栏中的,这里先不理它BatteryController.BatteryStateChangeCallback
}这个batteryController对象是在PhoneStatusBar.java (\frameworks\base\packages\systemui\src\com\android\systemui\statusbar\phone)中被new出来的。
BatteryController mBatteryC
StatusBarHeaderView mH
而后,又将这个对象set给了数字电量图标所在的StatusBarHeaderView。
protected PhoneStatusBarView makeStatusBarView() {
mBatteryController = new BatteryController(mContext);
mBatteryController.addStateChangedCallback(new BatteryStateChangeCallback() {/*此处省略*/});
mHeader = (StatusBarHeaderView) mStatusBarWindow.findViewById(R.id.header);
mHeader.setBatteryController(mBatteryController);
其中,makeStatusBarView()经过一系列的引用,最终是在systemUI.java中的start()中被调用,该方法的具体情况仍待学习,这里不再展开。
PhoneStatusBar把batteryController和我们的数字显示TextView关联在了一起,TextView可以通过batteryController感知到电量的变化并对剩余电量的&#20540;进行修改。那么接下来看看batteryController是如何感知电量变化的。
首先,它继承了BroadcastReceiver,定义了IntentFilter并注册了监听
public BatteryController(Context context) {
mPowerManager = (PowerManager) context.getSystemService(Context.POWER_SERVICE);
IntentFilter filter = new IntentFilter();
filter.addAction(Intent.ACTION_BATTERY_CHANGED);//我们需要的intent
filter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGED);
filter.addAction(PowerManager.ACTION_POWER_SAVE_MODE_CHANGING);
context.registerReceiver(this, filter);
}然后,在onReceive()中进行处理
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action.equals(Intent.ACTION_BATTERY_CHANGED)) {
mLevel = (int)(100f
//当前电量
* intent.getIntExtra(BatteryManager.EXTRA_LEVEL, 0)
/ intent.getIntExtra(BatteryManager.EXTRA_SCALE, 100));
mPluggedIn = intent.getIntExtra(BatteryManager.EXTRA_PLUGGED, 0) != 0;
final int status = intent.getIntExtra(BatteryManager.EXTRA_STATUS,
BatteryManager.BATTERY_STATUS_UNKNOWN);
mCharged = status == BatteryManager.BATTERY_STATUS_FULL;
mCharging = mCharged || status == BatteryManager.BATTERY_STATUS_CHARGING;
fireBatteryLevelChanged();//往下分发数据
fireBatteryLevelChanged()代码清单:
private void fireBatteryLevelChanged() {
final int N = mChangeCallbacks.size();
for (int i = 0; i & N; i++) {
//将事件分发给实现了接口BatteryController.BatteryStateChangeCallback的类
mChangeCallbacks.get(i).onBatteryLevelChanged(mLevel, mPluggedIn, mCharging);
private final ArrayList&BatteryStateChangeCallback& mChangeCallbacks = new ArrayList&&();在StatusBarHeaderView.java中
private void updateListeners() {
if (mListening) {
mBatteryController.addStateChangedCallback(this);//将自己添加到mChangeCallbacks中去
mNextAlarmController.addStateChangedCallback(this);
mBatteryController.removeStateChangedCallback(this);
mNextAlarmController.removeStateChangedCallback(this);
&#160;&#160;&#160; public void setListening(boolean listening) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (listening == mListening) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
&#160;&#160;&#160;&#160;&#160;&#160;&#160; mListening =
&#160;&#160;&#160;&#160;&#160;&#160;&#160; updateListeners();
&#160;&#160;&#160; }
在NotificationPanelView.java (\frameworks\base\packages\systemui\src\com\android\systemui\statusbar\phone) 中
private StatusBarHeaderView mH
private void setListening(boolean listening) {
mHeader.setListening(listening);
mKeyguardStatusBar.setListening(listening);
mQsPanel.setListening(listening);
&#160;public boolean onTouchEvent(MotionEvent event) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160; ......
&#160;&#160;&#160;&#160;&#160;&#160;&#160; if (mTwoFingerQsExpandPossible && event.getActionMasked() == MotionEvent.ACTION_POINTER_DOWN
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; && event.getPointerCount() == 2
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; && event.getY(event.getActionIndex()) & mStatusBarMinHeight) {
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; mTwoFingerQsExpand =
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; requestPanelHeightUpdate();
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // Normally, we start listening when the panel is expanded, but here we need to start
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; // earlier so the state is already up to date when dragging down.
&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160; setListening(true);
&#160;&#160;&#160;&#160;&#160;&#160;&#160; }
&#160;&#160;&#160;&#160;&#160;&#160;&#160; super.onTouchEvent(event);
&#160;&#160;&#160;&#160;&#160;&#160;&#160;
&#160;&#160;&#160; }
由于只在下拉菜单栏中才有数字&#26684;式的电量显示,所以当往下拉菜单栏的时候,开始监听并改变电量的&#20540;。代码到这里就基本结束了,再往下就是TouchEvent的处理了,是另外的模块。下一期讲一讲电量图标相关的内容。
&&相关文章推荐
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:2752次
排名:千里之外查看: 1084|回复: 7
本帖最后由 weiyutianya 于
16:54 编辑
& && &&&求助,用的安卓原生包,在设置里有个显示电量百分比选项,勾选之后会在状态栏电池图标左侧显示百分比,我想把那个百分比的百分号“%”去掉,只显示数字,类似魅族那种。这样能修改吗,能改的话在哪里改,求知道的大神告诉一下,感激不尽!
请输入验证码:
我只是路过打酱油的......
只换个状态栏就是
只换个状态栏就是
Screenshot_-09-36-56.png (543.23 KB, 下载次数: 4)
10:00 上传
Screenshot_-09-37-31.png (545.47 KB, 下载次数: 4)
10:01 上传
Screenshot_-09-37-52.png (542.44 KB, 下载次数: 4)
10:01 上传
Screenshot_-09-38-03.png (537.85 KB, 下载次数: 4)
10:01 上传
Screenshot_-09-38-21.png (664.17 KB, 下载次数: 4)
10:01 上传
Screenshot_-09-38-42.png (400.57 KB, 下载次数: 4)
10:01 上传
我只是路过打酱油的......
我只是路过打酱油的......
求大神帮忙
我只是路过打酱油的......
站长推荐 /2
每天不定期更新最优惠的数码及周边商品信息,让你白菜价买到心仪的商品!
即日起,只要在你所属机型的板块分享适用于该机型的手机评测、玩机心得体验、软件游戏资源即有机会获得移动叔叔现金抵用卷一张!
移动叔叔. 版权所有,专业的网络售后平台 (
商务合作||||

我要回帖

更多关于 iphone电量百分比设置 的文章

 

随机推荐