一个魔趣系统优化建议

希望魔趣能够学习MIUI,加入全局的导航栏自动取色实现导航栏透明.

你從哪一個 app 體現到MIUI有做導航欄透明而魔趣沒有的

科普一个常识…透明是没有颜色的。

我每个APP下边都是黑的,而且E-Mail下边明显有很宽的一个.

我全是黑的…

应用想往那里填什么色就是什么色,系统不应该自作主张去干涉。

大概是你的App还没兼容18:9全面屏吧

如果你说的是像下图这样的,那是正常的,取决于应用,应用没有给导航栏颜色,那默认就是黑的。

这是APP开发者执行的规范问题。

魔趣,QQ下边是黑的,MIUI为啥是白的?所以绝大多数应用都应该是没有设置的,系统做个小功能来实现增强有啥不好?

MIUI导航栏默认在应用界面就是白的吧亲……除非应用有另外定义别的颜色。

自动取色,这个确实不错的想法,包括状态栏,这些可以用一个开关来控制。这样可以对一些不规范的APP或者老的APP也能够显示得好看些。在显示默认状态、导航栏的时候,取边上APP颜色进行背景填充,并自动计算图标、文字的颜色。

如果你开了个播放器播放视频怎么办…

我似乎想到了早些年的一些Xposed模块,以及魅族Flyme的“沉浸状态栏”功能,无法实现渐变色的变色而且变色有延迟,还可能变色错误 :roll_eyes:

有啥不好,估计我如果拿 Android 设计规范出来你也是不服的。

唯一的不好就是实现起来没有你所想的那么简单。

取到哪个算哪个,反正都是打开时取一次。跟着变色有点太浪费了吧。为啥要弄个开关呢,因为这功能,除了好看,并不实用。
其实我把MOKEE里随便设置状态柆颜色的方法都给改了,让它成为0x80000000的颜色。有些APP乱改色,结果成了白底白字了,啥都看不到了。

SystemUI-LightStatusBarController:
    private boolean isLight(int vis, int statusBarMode) {
        boolean isTransparentBar = (statusBarMode == MODE_TRANSPARENT
                || statusBarMode == MODE_LIGHTS_OUT_TRANSPARENT);
        boolean allowLight = isTransparentBar && !mBatteryController.isPowerSave();
        boolean light = (vis & View.SYSTEM_UI_FLAG_LIGHT_STATUS_BAR) != 0;
        return allowLight && light;
    }
改成了:return false;
framework.jar 里的com.android.internal.policy.PhoneWindow:

   @Override
    public void setStatusBarColor(int color) {
        color=0x80000000;   //加个这个,不让它乱改。
        mStatusBarColor = color;
        mForcedStatusBarColor = true;
        if (mDecor != null) {
            mDecor.updateColorViews(null, false /* animate */);
        }
    }

我认为原生系统之所以「原生」,就是应该极力避免这些和原版 Android 不一致(甚至相冲突)的对 Android Runtime 的魔改。

虽然每次我说这句话的时候都会有人骂。

这很正常,毕竟不是真的原生,真的原生直接适配AOSP就行了,别的啥都不用加和改(真有这样的)。魔趣就是魔改之趣。喜欢用每夜版也是好改,改源码又编译太费时费力,直接改smali也成,还简单快速。啥时正式版也DOEDX就好了。

看我都改了哪些了:

if not '%1 == ' goto :ok
echo usage %~n0 ^
goto :eof
:ok
g:
if exist g:\patched rd /s /q g:\patched
if errorlevel 1 pause

rem install framework-res
cd \
if exist a rd /s /q a
md a
cd a
call new
7z e %1 system\framework\framework-res.apk
if errorlevel 1 pause
7z e %1 system\framework\org.mokee.platform-res.apk
if errorlevel 1 pause
call install-res framework-res.apk
call install-res org.mokee.platform-res.apk



rem system\priv-app\Dialer\
cd \
rd /s /q a 
md a
cd a
7z e %1 system\priv-app\Dialer\Dialer.apk
if errorlevel 1 pause
call baksmali Dialer.apk
if errorlevel 1 pause
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\Dialer.apk.4个列表\PhoneFavoritesTileAdapter.smali g:\a\out\
if errorlevel 1 pause
call smali
if errorlevel 1 pause
call putdex Dialer.apk
if errorlevel 1 pause
md \patched\system\priv-app\Dialer\
if errorlevel 1 pause
call signr shared Dialer.apk \patched\system\priv-app\Dialer\Dialer.apk
if errorlevel 1 pause

call F:\XiaoMi\framework.jar\patch.cmd %1


rem system\framework\services.jar
cd \
rd /s /q a 
md a
cd a
7z e %1 system\framework\services.jar
if errorlevel 1 pause
call baksmali services.jar
if errorlevel 1 pause
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\services.jar\com.android.server\AppOpsService.smali g:\a\out\
if errorlevel 1 pause
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\services.jar\com.android.server\DropBoxManagerService.smali g:\a\out\
if errorlevel 1 pause
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\services.jar\com.android.server\EntropyMixer.smali g:\a\out\
if errorlevel 1 pause
del out\com\android\server\EntropyMixer$1.smali
del out\com\android\server\EntropyMixer$2.smali
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\services.jar\com.android.server.connectivity\NetworkMonitor.smali g:\a\out\
if errorlevel 1 pause
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\services.jar\com.android.server.am\ProcessStatsService.smali g:\a\out\
if errorlevel 1 pause
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\services.jar\com.android.server.am\TaskPersister.smali g:\a\out\
if errorlevel 1 pause
del out\com\android\server\am\TaskPersister$LazyTaskWriterThread.smali
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\services.jar\com.android.server.net\NetworkStatsRecorder.smali g:\a\out\
if errorlevel 1 pause
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\services.jar\com.android.server.notification\NotificationManagerService$7.smali g:\a\out\
if errorlevel 1 pause
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\services.jar\com.android.server.pm\PackageUsage.smali g:\a\out\
if errorlevel 1 pause
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\services.jar\com.android.server.usage\UsageStatsService.smali g:\a\out\
if errorlevel 1 pause
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\services.jar\com.android.server.usage\UserUsageStatsService.smali g:\a\out\
if errorlevel 1 pause
call smali
if errorlevel 1 pause
7z a -tzip services.jar classes.dex
if errorlevel 1 pause
if not exist \patched\system\framework\ md \patched\system\framework\
if errorlevel 1 pause
move services.jar \patched\system\framework\
if errorlevel 1 pause



rem system\priv-app\MediaProvider\MediaProvider.apk
cd \
rd /s /q a 
md a
cd a
7z e %1 system\priv-app\MediaProvider\MediaProvider.apk
if errorlevel 1 pause
call baksmali MediaProvider.apk
if errorlevel 1 pause
call d:\py F:\XiaoMi\patch.py F:\XiaoMi\MediaProvider.apk\MediaScannerReceiver.smali g:\a\out\
if errorlevel 1 pause
call smali
if errorlevel 1 pause
7z a -tzip MediaProvider.apk classes.dex 
if errorlevel 1 pause
call decode MediaProvider.apk -om
if errorlevel 1 pause
d:\progra~1\busybox patch -p0 -i F:\XiaoMi\MediaProvider.apk\AndroidManifest.xml.patch g:\a\m\AndroidManifest.xml
if errorlevel 1 pause
call encode m tmp.apk -f
if errorlevel 1 pause
cd m\build\apk
7z a -tzip g:\a\MediaProvider.apk AndroidManifest.xml
cd \a
md \patched\system\priv-app\MediaProvider\
call signr media MediaProvider.apk \patched\system\priv-app\MediaProvider\MediaProvider.apk
if errorlevel 1 pause



rem system\priv-app\MKParts\MKParts.apk
cd \
rd /s /q a 
md a
cd a
7z e %1 system\priv-app\MKParts\MKParts.apk
if errorlevel 1 pause
call decode MKParts.apk -om
if errorlevel 1 pause
d:\progra~1\busybox patch -p0 -i F:\XiaoMi\MKParts.apk\AndroidManifest.xml.patch g:\a\m\AndroidManifest.xml
if errorlevel 1 pause
del G:\a\m\smali\org\mokee\mkparts\MKPartsApplication*.smali
copy F:\XiaoMi\MKParts.apk\MKPartsApplication.smali G:\a\m\smali\org\mokee\mkparts\MKPartsApplication.smali
rd /s /q G:\a\m\smali\cn
rd /s /q G:\a\m\smali\org\mokee\mkparts\push
call encode m tmp.apk -f
if errorlevel 1 pause
md \patched\system\priv-app\MKParts\
call signr platform tmp.apk \patched\system\priv-app\MKParts\MKParts.apk
if errorlevel 1 pause


call F:\XiaoMi\Settings\patch.cmd %1

call F:\XiaoMi\snap\patch.cmd %1

call F:\XiaoMi\DeskClock\patch.cmd %1

call F:\XiaoMi\SystemUI\patch.cmd %1

call F:\XiaoMi\TeleService.apk\patch.cmd %1

call F:\XiaoMi\FMRadio.apk\patch.cmd %1

rem delete
7z d %1 system/app/fastdormancy system/app/Jelly system/app/LiveWallpapersPicker system/app/LockClock system/app/MoKeeWeatherProvider system/app/GoogleIntl system/app/Substratum system/app/webview system/priv-app/Lawnchair system/priv-app/LawnFeed system/priv-app/MKCenter system/priv-app/MoKeePay

rem add
if not exist \patched\system\app\ md \patched\system\app\
copy F:\XiaoMi\system-app\*.* \patched\system\app\
if not exist \patched\system\media\audio\ringtones\ md \patched\system\media\audio\ringtones\
copy F:\XiaoMi\fairyland.ogg \patched\system\media\audio\ringtones\

rem chk and update wpa_supplicant
7z e -og:\a %1 system\bin\wpa_supplicant 
fc /b F:\XiaoMi\wpa_supplicant\wpa_supplicant.bak g:\a\wpa_supplicant
if errorlevel 1 goto :e
echo !!!!=========== F:\XiaoMi\wpa_supplicant======added
if not exist \patched\system\bin md \patched\system\bin
copy F:\XiaoMi\wpa_supplicant\wpa_supplicant \patched\system\bin
:e

rem update
g:
cd \patched
7z a %1 system
cd \


还有这样的玩法吗?

这是你个人的玩法,你改成彩虹色跑马灯我也没意见。