package com.demo.factory;import android.content.Context;import android.content.res.Resources;import android.util.DisplayMetrics;import com.demo.ui.activity.basic.Base;import com.demo.config.Config;import com.demo.utils.LogUtils;import java.lang.reflect.Method;public class Axis {    private static int w;    private static int h;    private static float scaledDensity;    public static void init(Context context) {        DisplayMetrics metrics = new DisplayMetrics();        context.getWindowManager().getDefaultDisplay().getMetrics(metrics);        w = metrics.widthPixels;        LogUtils.e("w------------",w+"");        h = metrics.heightPixels;        scaledDensity = metrics.scaledDensity;    }    public static int scaleX(int x) {        return scaleX(x, 0);    }    public static int scaleY(int y) {        return scaleY(y, 0);    }    public static int toDesignX(int x) {        return (int) (x * Config.width / w);    }    public static int toDesignY(int y) {        return (int) (y * Config.height / h);    }    public static int scaleX(int x, float ox) {        return (int) (x * (w - w * ox) / (Config.width - Config.width * ox));    }    public static int scaleY(int y, float oy) {        return (int) (y * (h - h * oy) / (Config.height - Config.height * oy));    }    public static int getWidth() {        return w;    }    public static int getHeight() {        return h;    }    public static int scale(int x) {        return x * Math.min(w, h) / Config.width;    }    public static float scaleTextSize(int textSize) {        return scale(textSize) / scaledDensity;    }    /**     * 是否开启了虚拟按键     *      * @param context     * @return     */    private static boolean checkDeviceHasNavigationBar(Context context) {        boolean hasNavigationBar = false;        Resources rs = context.getResources();        int id = rs                .getIdentifier("config_showNavigationBar", "bool", "android");        if (id > 0) {            hasNavigationBar = rs.getBoolean(id);        }        try {            Class systemPropertiesClass = Class                    .forName("android.os.SystemProperties");            Method m = systemPropertiesClass.getMethod("get", String.class);            String navBarOverride = (String) m.invoke(systemPropertiesClass,                    "qemu.hw.mainkeys");            if ("1".equals(navBarOverride)) {                hasNavigationBar = false;            } else if ("0".equals(navBarOverride)) {                hasNavigationBar = true;            }        } catch (Exception e) {        }        return hasNavigationBar;    }    /**     * 获取虚拟按键的高度     *      * @param context     * @return     */    public static int getNavigationBarHeight(Context context) {        int navigationBarHeight = 0;        Resources rs = context.getResources();        int id = rs.getIdentifier("navigation_bar_height", "dimen", "android");        if (id > 0 && checkDeviceHasNavigationBar(context)) {            navigationBarHeight = rs.getDimensionPixelSize(id);        }        return navigationBarHeight;    }}

Config 类

package com.demo.config;public class Config {    public static int width = 1080;    public static int height = 1920;    //public static boolean isControlButtonRun = false;    public static float RatioOfHeaderHeightToRefresh = 0.8f;    public static String ACACHE_NAVISEARCH_STRING = "ACACHE_NAVISEARCH_STRING";}

更多相关文章

  1. android获得屏幕高度和宽度
  2. android设备添加F1-F12按键功能
  3. Android 获取View高度宽度
  4. 修改应用按键无响应的时间
  5. 全志A64 Android7.1屏蔽使用按键进入安全模式的方法
  6. Android获取屏幕实际高度跟显示高度,判断Android设备是否拥有虚拟
  7. android 虚拟按键遮挡布局
  8. android:imeOptions指定了弹出键盘时右下角的按键的显示文字
  9. 很实用的android按键处理

随机推荐

  1. 定制checkbox
  2. android中webservce获取soapObject数据的
  3. Android(安卓)退出整个程序代码
  4. 如何修改android工程的包名
  5. android起始页面与导航页面
  6. Android变成setContentView()报错空指针异
  7. Android(安卓)Studio中buildToolsVersion
  8. android studio如何添加jni
  9. Visual Studio + android + opencv 跨平
  10. SharedPreference用法