Android 8.1 Launcher3 去掉桌面底部渐白色部分

文章描述了一个在修改设备dpi为160后,Launcher3中GradientView出现底部颜色异常的状况。原因是原始代码中的mMaskHeight计算未适应新的dpi。提供了两种解决方案:一是将dpi调整回213或240,二是增加mMaskHeight的值。作者通过修改onDraw方法中的相关变量和绘制逻辑来解决这个问题。
摘要由CSDN通过智能技术生成

vendor/mediatek/proprietary/packages/apps/Launcher3/src/com/android/launcher3/graphics/GradientView.java

protected void onDraw(Canvas canvas) {
        Paint paint = mShowScrim ? mPaintWithScrim : mPaintNoScrim;

        float head = 0.29f;
        float linearProgress = head + (mProgress * (1f - head));
        float startMaskY = (1f - linearProgress) * mHeight - mMaskHeight * linearProgress;
        float interpolatedAlpha = (255 - mAlphaStart) * mAccelerator.getInterpolation(mProgress);
        paint.setAlpha((int) (mAlphaStart + interpolatedAlpha));
        float div = (float) Math.floor(startMaskY + mMaskHeight);
        mAlphaMaskRect.set(0, startMaskY, mWidth, div);
        mFinalMaskRect.set(0, div, mWidth, mHeight);
-       canvas.drawBitmap(mAlphaGradientMask, null, mAlphaMaskRect, paint);
+     //  canvas.drawBitmap(mAlphaGradientMask, null, mAlphaMaskRect, paint);//zhuangwf
        canvas.drawRect(mFinalMaskRect, paint);

问题:修改后底下出现其他颜色的部分!
在这里插入图片描述

原因:机器本来是800*1280的,结果dpi设置为160,导致了这个问题。

解决方法一: 改dpi 为213或者240
解决方法二 :把mMaskHeight 加点值 ,比如,mMaskHeight 改为 (mMaskHeight+30) 。
vendor/mediatek/proprietary/packages/apps/Launcher3/src/com/android/launcher3/graphics/GradientView.java

   @Override
    protected void onDraw(Canvas canvas) {
        Paint paint = mShowScrim ? mPaintWithScrim : mPaintNoScrim;
++	Paint paint1 =  mPaintNoScrim;//zhuangwf
        float head = 0.29f;
        float linearProgress = head + (mProgress * (1f - head));
++       float startMaskY = (1f - linearProgress) * mHeight - (mMaskHeight+30) * linearProgress;//zhuangwf
        float interpolatedAlpha = (255 - mAlphaStart) * mAccelerator.getInterpolation(mProgress);
        paint.setAlpha((int) (mAlphaStart + interpolatedAlpha));
++        float div = (float) Math.floor(startMaskY + (mMaskHeight+30));//zhuangwf
        mAlphaMaskRect.set(0, startMaskY, mWidth, div);
        mFinalMaskRect.set(0, div, mWidth, mHeight);
++        canvas.drawBitmap(mAlphaGradientMask, null, mAlphaMaskRect, paint1);//zhuangwf
        canvas.drawRect(mFinalMaskRect, paint);
        if (DEBUG) {
            mDebugPaint.setColor(0xFF00FF00);
            canvas.drawLine(0, startMaskY, mWidth, startMaskY, mDebugPaint);
++            canvas.drawLine(0, startMaskY + (mMaskHeight+30), mWidth, startMaskY + (mMaskHeight+30), mDebugPaint);//zhuangwf
        }
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王睿丶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值