电池界面
一:onCreate()
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
mStatsHelper.create(icicle);
addPreferencesFromResource(R.xml.power_usage_summary);加载布局
mAppListGroup = (PreferenceGroup) findPreference(KEY_APP_LIST);//实例化group
mBatteryStatusPref = mAppListGroup.findPreference(KEY_BATTERY_STATUS);
setHasOptionsMenu(true);
getActivity().getActionBar().setDisplayHomeAsUpEnabled(false);
getActivity().getActionBar().setHomeButtonEnabled(false);
}
二:看XML文件
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android"
android:title="@string/battery_since_unplugged"
android:key="app_list">
<Preference
style="?android:attr/preferenceInformationStyle"
android:key="battery_status"
android:persistent="false"
/>
</PreferenceScreen>
三:走onCreateView
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.add_layout_preference,null);
return v;
}
四:单机事件onPreferenceTreeClick<pre name="code" class="java">@Override
public boolean onPreferenceTreeClick(PreferenceScreen preferenceScreen, Preference preference) {
if (preference instanceof BatteryHistoryPreference) {
Parcel hist = Parcel.obtain();
mStatsHelper.getStats().writeToParcelWithoutUids(hist, 0);
byte[] histData = hist.marshall();
Bundle args = new Bundle();
args.putByteArray(BatteryHistoryDetail.EXTRA_STATS, histData);
PreferenceActivity pa = (PreferenceActivity)getActivity();
pa.startPreferencePanel(BatteryHistoryDetail.class.getName(), args,
R.string.history_details_title, null, null, 0);
return super.onPreferenceTreeClick(preferenceScreen, preference);
}
if (!(preference instanceof PowerGaugePreference)) {
return false;
}
PowerGaugePreference pgp = (PowerGaugePreference) preference;
BatterySipper sipper = pgp.getInfo();
mStatsHelper.startBatteryDetailPage((PreferenceActivity) getActivity(), sipper, true);
return super.onPreferenceTreeClick(preferenceScreen, preference);
五:数据来源onResume()
@Override
public void onResume() {
super.onResume();
getActivity().registerReceiver(mBatteryInfoReceiver,
new IntentFilter(Intent.ACTION_BATTERY_CHANGED));
refreshStats();
}
private void refreshStats() {
mAppListGroup.removeAll();
mAppListGroup.setOrderingAsAdded(false);
mBatteryStatusPref.setOrder(-2);
mAppListGroup.addPreference(mBatteryStatusPref);
BatteryHistoryPreference hist = new BatteryHistoryPreference(
getActivity(), mStatsHelper.getStats());
hist.setOrder(-1);
mAppListGroup.addPreference(hist);
if (mStatsHelper.getPowerProfile().getAveragePower(
PowerProfile.POWER_SCREEN_FULL) < 10) {
addNotAvailableMessage();
return;
}
mStatsHelper.refreshStats(false);
List<BatterySipper> usageList = mStatsHelper.getUsageList();
for (BatterySipper sipper : usageList) {
if (sipper.getSortValue() < MIN_POWER_THRESHOLD) continue;
final double percentOfTotal =
((sipper.getSortValue() / mStatsHelper.getTotalPower()) * 100);
if (percentOfTotal < 1) continue;
PowerGaugePreference pref =
new PowerGaugePreference(getActivity(), sipper.getIcon(), sipper);
final double percentOfMax =
(sipper.getSortValue() * 100) / mStatsHelper.getMaxPower();
sipper.percent = percentOfTotal;
pref.setTitle(sipper.name);
pref.setOrder(Integer.MAX_VALUE - (int) sipper.getSortValue()); // Invert the order
pref.setPercent(percentOfMax, percentOfTotal);
if (sipper.uidObj != null) {
pref.setKey(Integer.toString(sipper.uidObj.getUid()));
}
mAppListGroup.addPreference(pref);
if (mAppListGroup.getPreferenceCount() > (MAX_ITEMS_TO_LIST+1)) break;
}