Android 图片显示与屏幕适配的问题

发布时间 - 2026-01-11 02:42:52    点击率:

Android 图片显示与屏幕适配的问题

在Android开发中比较头疼的是Android的分辨率问题,那么这里给大家介绍个万能办法,这个办法的优点是可以实现万能适应,给开发和美工设计提供了依据,但是对开发来说代码量也不少,具体办法:

(1)获取屏幕的尺寸

WindowManager windowManager = (WindowManager)     getSystemService(Context.WINDOW_SERVICE);
Display d = windowManager.getDefaultDisplay();
mWidth = d.getWidth();mHeight = d.getHeight();
DisplayMetrics dm = getResources().getDisplayMetrics()
mScreenDensity = dm.density;

(2)美工设计图的尺寸

uiWidth,uiHeight

(3)获取缩放比例

float scaleWidth = mWidth / uiWidth;
float scaleHeight = mHeight/ uiHeight;

(4)所有布局的尺寸用代码实现:

public static int getWidthSize(int size) {
        return (int) (size * scaleWidth);
    }

    public static int getHightSize(int size) {
        return (int) (size * scaleHeight);
    }

    public static float getTextSize(int pxSize) {
        return (pxSize * scaleHeight) / mScreenDensity;
    }

    public static void setViewSize(int width, int height, View v) {
        int paramWidth = getWidthSize(width);
        int paramHeight = getHightSize(height);
        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) v
                .getLayoutParams();
        if (width != INVALID) {
            params.width = paramWidth;
        }
        if (height != INVALID) {
            params.height = paramHeight;
        }
        v.setLayoutParams(params);
    }

    public static void setViewPadding(int left, int top, int right, int bottom,
            View v) {
        left = getWidthSize(left);
        top = getHightSize(top);
        right = getWidthSize(right);
        bottom = getWidthSize(bottom);
        v.setPadding(left, top, right, bottom);
    }

    public static void setViewMargin(int left, int top, int right, int bottom,
            View v) {
        int paramLeft = getWidthSize(left);
        int paramTop = getHightSize(top);
        int paramRight = getWidthSize(right);
        int paramBottom = getHightSize(bottom);
        ViewGroup.MarginLayoutParams params = (ViewGroup.MarginLayoutParams) v
                .getLayoutParams();
        if (left != INVALID) {
            params.leftMargin = paramLeft;
        }
        if (right != INVALID) {
            params.rightMargin = paramRight;
        }
        if (top != INVALID) {
            params.topMargin = paramTop;
        }
        if (bottom != INVALID) {
            params.bottomMargin = paramBottom;
        }
        v.setLayoutParams(params);}

(5)这里是设置尺寸的代码:

setViewSize(100, 100, mView);
    setViewMargin(20, 0, 0, 20, mView);
    setViewPadding(10, 10, 10, 10, mView);
    mTextView.setTextSize(getTextSize(30));

由上在设计效果图时,可对图内元素进行尺寸标注,程序即可实现按比例缩放。

以上就是Android 图片显示与屏幕适配的问题的万能解决办法,如有疑问请留言或者到本站社区交流讨论,感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!


# Android  # 图片显示与屏幕适配  # 屏幕适配的问题解决办法  # Android屏幕适配工具类 Android自动生成不同分辨率的值  # Android中关于屏幕的三个小众知识(宽屏适配、禁止截屏和保持屏幕常亮)  # 简单谈谈我的Android屏幕适配之路  # Android 手机屏幕适配解决办法  # Android的分辨率和屏幕适配详解  # Android-屏幕适配需要注意的地方总结  # Android 简单好用的屏幕适配方案  # 的是  # 如有  # 希望能  # 给大家  # 可以实现  # 谢谢大家  # 解决办法  # 可对  # 由上  # 按比例  # 疑问请  # mScreenDensity  # getDisplayMetrics  # density  # uiWidth  # DisplayMetrics  # getHeight  # getResources  # dm  # uiHeight 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: JavaScript如何实现错误处理_try...catch如何捕获异常?  详解免费开源的.NET多类型文件解压缩组件SharpZipLib(.NET组件介绍之七)  Laravel如何实现API版本控制_Laravel版本化API设计方案  Laravel如何使用Vite进行前端资源打包?(配置示例)  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  西安市网站制作公司,哪个相亲网站比较好?西安比较好的相亲网站?  深入理解Android中的xmlns:tools属性  网站建设保证美观性,需要考虑的几点问题!  如何快速登录WAP自助建站平台?  百度输入法ai面板怎么关 百度输入法ai面板隐藏技巧  Laravel怎么配置不同环境的数据库_Laravel本地测试与生产环境动态切换【方法】  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  Python企业级消息系统教程_KafkaRabbitMQ高并发应用  Python自动化办公教程_ExcelWordPDF批量处理案例  JS经典正则表达式笔试题汇总  uc浏览器二维码扫描入口_uc浏览器扫码功能使用地址  Edge浏览器提示“由你的组织管理”怎么解决_去除浏览器托管提示【修复】  如何用搬瓦工VPS快速搭建个人网站?  Laravel的HTTP客户端怎么用_Laravel HTTP Client发起API请求教程  iOS中将个别页面强制横屏其他页面竖屏  JavaScript如何实现类型判断_typeof和instanceof有什么区别  EditPlus中的正则表达式 实战(1)  html5的keygen标签为什么废弃_替代方案说明【解答】  Chrome浏览器标签页分组怎么用_谷歌浏览器整理标签页技巧【效率】  如何快速建站并高效导出源代码?  Laravel Telescope怎么调试_使用Laravel Telescope进行应用监控与调试  如何在建站主机中优化服务器配置?  Laravel如何与Docker(Sail)协同开发?(环境搭建教程)  东莞市网站制作公司有哪些,东莞找工作用什么网站好?  用v-html解决Vue.js渲染中html标签不被解析的问题  Laravel怎么连接多个数据库_Laravel多数据库连接配置  如何在云虚拟主机上快速搭建个人网站?  Laravel如何使用Collections进行数据处理?(实用方法示例)  INTERNET浏览器怎样恢复关闭标签页_INTERNET浏览器标签恢复快捷键与方法【指南】  如何快速查询域名建站关键信息?  Laravel如何使用Contracts(契约)进行编程_Laravel契约接口与依赖反转  Laravel队列任务超时怎么办_Laravel Queue Timeout设置详解  Win11怎么设置默认图片查看器_Windows11照片应用关联设置  如何制作公司的网站链接,公司想做一个网站,一般需要花多少钱?  原生JS实现图片轮播切换效果  如何用好域名打造高点击率的自主建站?  UC浏览器如何设置启动页 UC浏览器启动页设置方法  佛山企业网站制作公司有哪些,沟通100网上服务官网?  Laravel用户密码怎么加密_Laravel Hash门面使用教程  千问怎样用提示词获取健康建议_千问健康类提示词注意事项【指南】  如何快速搭建高效服务器建站系统?  消息称 OpenAI 正研发的神秘硬件设备或为智能笔,富士康代工  如何在Windows服务器上快速搭建网站?  软银砸40亿美元收购DigitalBridge 强化AI资料中心布局  韩国网站服务器搭建指南:VPS选购、域名解析与DNS配置推荐