获得华为手机刘海屏幕刘海高度宽度与虚拟按键背景颜色修改

 
package 哈哈哈哈哈哈哈哈哈哈;
import android.content.Context;
import android.graphics.Color;
import android.os.Build;
import android.os.Bundle;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import android.widget.TextView;

import java.lang.reflect.Method;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        TextView tv_pd = findViewById(R.id.tv_pd);

        StringBuffer sb = new StringBuffer();
        boolean bb = hasNotchInScreen(this);

        int banben = Build.VERSION.SDK_INT;
        sb.append("代号(28)" + banben);
        sb.append("\n");
        if (bb) {
            sb.append("是刘海屏幕" + bb);
            sb.append("\n");
            int[] iwh = getNotchSize(this);
            sb.append("宽:" + iwh[0]);
            sb.append("\n");
            sb.append("高:" + iwh[1]);
            sb.append("\n手机厂商一般情况下已经处理好刘海问题,仅在全屏下稍作考虑");
        } else {
            sb.append("不是刘海屏幕" + bb);
        }


        if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) {
            getWindow().setNavigationBarColor(Color.parseColor("#3F51B5"));
            //getWindow().setNavigationBarColor(getResources().getColor(R.color.black));
            //getWindow().setNavigationBarColor(Color.BLUE);
            sb.append("修改虚拟按键背景颜色修改成功,按键颜色不变");
        }

        tv_pd.setText(sb.toString());
    }

    /**
     * 华为start
     */
//判断是否是华为刘海屏
    public static boolean hasNotchInScreen(Context context) {
        boolean ret = false;
        try {
            ClassLoader cl = context.getClassLoader();
            Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");
            Method get = HwNotchSizeUtil.getMethod("hasNotchInScreen");
            ret = (boolean) get.invoke(HwNotchSizeUtil);

        } catch (ClassNotFoundException e) {
            Log.e("test", "hasNotchInScreen ClassNotFoundException");
        } catch (NoSuchMethodException e) {
            Log.e("test", "hasNotchInScreen NoSuchMethodException");
        } catch (Exception e) {
            Log.e("test", "hasNotchInScreen Exception");
        } finally {
            return ret;
        }
    }

    //获取华为刘海的高宽
    public static int[] getNotchSize(Context context) {
        int[] ret = new int[]{0, 0};
        try {
            ClassLoader cl = context.getClassLoader();
            Class HwNotchSizeUtil = cl.loadClass("com.huawei.android.util.HwNotchSizeUtil");
            Method get = HwNotchSizeUtil.getMethod("getNotchSize");
            ret = (int[]) get.invoke(HwNotchSizeUtil);
        } catch (ClassNotFoundException e) {
            Log.e("haha", "getNotchSize ClassNotFoundException");
        } catch (NoSuchMethodException e) {
            Log.e("haha", "getNotchSize NoSuchMethodException");
        } catch (Exception e) {
            Log.e("haha", "getNotchSize Exception");
        } finally {
            return ret;
        }
    }
}
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值