1.矢量图 用Androidstudio画的 vendor\mediatek\proprietary\packages\apps\MtkSettings\res\drawable\ic_settings_memory_test.xml
<vector android:autoMirrored="true" android:height="24dp"
android:tint="#FFFFFF" android:viewportHeight="24"
android:viewportWidth="24" android:width="24dp" xmlns:android="http://schemas.android.com/apk/res/android">
<path android:fillColor="@android:color/white" android:pathData="M15,9L9,9v6h6L15,9zM13,13h-2v-2h2v2zM21,11L21,9h-2L19,7c0,-1.1 -0.9,-2 -2,-2h-2L15,3h-2v2h-2L11,3L9,3v2L7,5c-1.1,0 -2,0.9 -2,2v2L3,9v2h2v2L3,13v2h2v2c0,1.1 0.9,2 2,2h2v2h2v-2h2v2h2v-2h2c1.1,0 2,-0.9 2,-2v-2h2v-2h-2v-2h2zM17,17L7,17L7,7h10v10z"/>
</vector>
2. 新增vendor\mediatek\proprietary\packages\apps\MtkSettings\res\drawable\ic_homepage_memory.xml
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item>
<com.android.settingslib.widget.AdaptiveIconShapeDrawable
android:width="@dimen/dashboard_tile_image_size"
android:height="@dimen/dashboard_tile_image_size"
android:color="#7B68EE" />
</item>
<item
android:width="28dp"
android:height="28dp"
android:start="4dp"
android:top="4dp"
android:drawable="@drawable/ic_settings_memory_test" />
</layer-list>
3. 修改 vendor\mediatek\proprietary\packages\apps\MtkSettings\res\xml\top_level_settings.xml<Preference
android:key="top_level_storage"
android:title="@string/storage_settings"
android:summary="@string/summary_placeholder"
android:icon="@drawable/ic_homepage_storage"
android:order="-60"
android:fragment="com.android.settings.deviceinfo.StorageSettings"
settings:controller="com.android.settings.deviceinfo.TopLevelStoragePreferenceController" />
<Preference
android:key="top_level_memory"
android:title="@string/memory_settings_title"
android:summary="@string/summary_placeholder"
android:icon="@drawable/ic_homepage_memory"
android:order="-55"
android:fragment="com.android.settings.applications.ProcessStatsSummary"
settings:controller="com.android.settings.deviceinfo.TopLevelMemoryPreferenceController" />
<Preference
android:key="top_level_privacy"
android:title="@string/privacy_dashboard_title"
android:summary="@string/privacy_dashboard_summary"
android:icon="@drawable/ic_homepage_privacy"
android:order="-50"
android:fragment="com.android.settings.privacy.PrivacyDashboardFragment"
settings:controller="com.android.settings.privacy.TopLevelPrivacyPreferenceController" />
注意这里的order 顺序递增即可
4. 新增文件vendor\mediatek\proprietary\packages\apps\MtkSettings\src\com\android\settings\deviceinfo\TopLevelMemoryPreferenceController.java
package com.android.settings.deviceinfo;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.content.Context;
import android.os.Build;
import android.os.Bundle;
import android.os.Environment;
import android.os.storage.StorageManager;
import android.text.format.Formatter;
import androidx.preference.Preference;
import com.android.settings.R;
import com.android.settings.Utils;
import com.android.settings.core.BasePreferenceController;
import com.android.settings.applications.ProcStatsData;
import com.android.settings.applications.ProcStatsData.MemInfo;
import com.android.settingslib.deviceinfo.StorageManagerVolumeProvider;
import com.android.settingslib.deviceinfo.PrivateStorageInfo;
import com.android.settingslib.utils.ThreadUtils;
import android.text.format.Formatter.BytesResult;
import java.io.File;
import java.text.NumberFormat;
public class TopLevelMemoryPreferenceController extends BasePreferenceController {
private final ActivityManager mActivityManager;
private final MemoryInfo mMemoryInfo;
public TopLevelMemoryPreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
mActivityManager = mContext.getSystemService(ActivityManager.class);
mMemoryInfo = new MemoryInfo();
}
@Override
public int getAvailabilityStatus() {
return AVAILABLE;
}
@Override
protected void refreshSummary(Preference preference) {
if (preference == null) {
return;
}
ThreadUtils.postOnBackgroundThread(() -> {
mActivityManager.getMemoryInfo(mMemoryInfo);
final long totalMemory = mMemoryInfo.totalMem;
final long availMemory = mMemoryInfo.availMem;
final long usedMemory = totalMemory - availMemory;
ThreadUtils.postOnMainThread(() -> {
final String usedMemoryStr = Formatter.formatFileSize(mContext, usedMemory);
final String availMemoryStr = Formatter.formatFileSize(mContext, availMemory);
preference.setSummary(mContext.getString(R.string.memory_summary, usedMemoryStr, availMemoryStr));
});
});
}
}