android不同分辨率下屏幕动态适配

前段时间在网上看到了一个“网易音乐”屏幕适配的视频,然后根据其思路写了个适配的demo,运行在不同分辨率机器上,效果还可以,话不多说,下面直接开讲。

在日常开发中,UI妹子给出的设计图只是根据一个分辨率创作的,但是市面上手机的分辨率却多如牛毛,而且一般设计标注控件的单位都是px,而我们一般用的是dp;两个单位的转换麻烦至极,再遇到个吹毛求疵,几个像素都要扣的人,那就GG了。所以我们能不能直接就用px做单位,这样就和原设计图一模一样了不是。

说了这么多,其实这个实现思路也很简单,你UI根据某个分辨率创作的设计图,那我也根据你的分辨率进行布局,然后在实际运行中根据实际的分辨率计算出与布局时分辨率的倍数,然后动态计算再赋值,这样是不是就好了。

import android.app.Activity;
import android.content.Context;
import android.util.DisplayMetrics;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

public class ViewUtil {
    private static ViewUtil viewUtil;
    private int defHeight = 1280;//UI设计时的宽
    private int defWidth = 720;//UI设计时的高
    private float heightMultiple = 1;//高的倍数
    private float widthMultiple = 1;//宽的倍数

    public static ViewUtil getInstance() {
        if (viewUtil == null) {
            viewUtil = new ViewUtil();
        }
        return viewUtil;
    }

    public View getView(Context context, int layoutResID) {
        getPhoneSize(context);
        View view = LayoutInflater.from(context).inflate(layoutResID, null);
        modifyViewSize(view);
        return view;
    }

    private void modifyViewSize(View view) {
        //判断该view是否是viewGroup,是则修改其大小,并遍历其中的子控件
        if (view instanceof ViewGroup) {
            ViewGroup viewGroup = (ViewGroup) v
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值