Android 字体适配

效果图:
public class ScreenAdaptation {
 
    private Application.ActivityLifecycleCallbacks activityLifecycleCallbacks;
 
    private Application mApplication;
 
    private float mWidth = 720;
 
    private float mHeight = 1280;
 
    public ScreenAdaptation(Application application, float width, int height) {
 
        mApplication = application;
 
        mWidth = width;
 
        mHeight = height;
 
        activityLifecycleCallbacks = new Application.ActivityLifecycleCallbacks() {
 
            @Override
 
            public void onActivityCreated(Activity activity, Bundle savedInstanceState) {
 
 
                //开启Activity才执行
 
                resetDensity(activity, mWidth, mHeight);
 
            }
 
            @Override
 
            public void onActivityStarted(Activity activity) {
 
            }
 
            @Override
 
            public void onActivityResumed(Activity activity) {
 
            }
 
            @Override
 
            public void onActivityPaused(Activity activity) {
 
            }
 
            @Override
 
            public void onActivityStopped(Activity activity) {
 
            }
 
            @Override
 
            public void onActivitySaveInstanceState(Activity activity, Bundle outState) {
 
            }
 
            @Override
 
            public void onActivityDestroyed(Activity activity) {
 
            }
 
        };
 
    }
 
    /**
     * 注册
     */
 
    public void register() {
 
        resetDensity(mApplication, mWidth, mHeight);
 
        mApplication.registerActivityLifecycleCallbacks(activityLifecycleCallbacks);
 
    }
 
    /**
     * 注销
     */
 
    public void unregister() {
        //设置为默认
 
        mApplication.getResources().getDisplayMetrics().setToDefaults();
 
        mApplication.unregisterActivityLifecycleCallbacks(activityLifecycleCallbacks);
 
    }
 
    /**
     * dp适配getResources().getDisplayMetrics().density
     * <p>
     * sp适配getResources().getDisplayMetrics().scaledDensity
     * <p>
     * pt适配getResources().getDisplayMetrics().xdpi
     *
     * @paramcontext
     * @paramwidthui设计图的宽度
     * @paramheightui设计图的高度
     */
 
    private static void resetDensity(Context context, float width, float height) {
 
        Point point = new Point();
 
 
        //获取屏幕的数值
 
        ((WindowManager) context.getSystemService(WINDOW_SERVICE)).getDefaultDisplay().getSize(point);
 
 
        //dp适配getResources().getDisplayMetrics().density
 
        context.getResources().getDisplayMetrics().density = point.x / width * 2f;
 
        context.getResources().getDisplayMetrics().density = point.y / height * 2f;
 
 
        //sp适配getResources().getDisplayMetrics().scaledDensity
 
        context.getResources().getDisplayMetrics().scaledDensity = point.x / width * 2f;
 
        context.getResources().getDisplayMetrics().scaledDensity = point.y / height * 2f;
 
    }
 
}
在Application类的onCreate方法中调用
new ScreenAdaptation(this,720,1280).register();

上面就是全部的代码了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值