07,Android屏幕适配(代码适配)

本文介绍了Android中如何通过代码进行屏幕适配,包括使用DisplayMetrics获取屏幕宽高、动态设置控件尺寸以及通过getWindowManager获取屏幕尺寸的方法。详细讲解了在不同场景下如何在代码中实现适配,确保在各种屏幕尺寸上获得良好显示效果。
摘要由CSDN通过智能技术生成

1,代码适配

  • 有一些情况下,我们需要去动态的设置控件的大小或者是控件的位置,比如dialog或者popupwindow的偏移量或者是显示的位置等等,这个时候在xml布局里就显得有点乏力,我们可以根据当前屏幕的大小属性来设置合适的数值。

  • 有些时候我们会再代码中获取一个预留的位置。在不同屏幕上显示效果不好

  • 代码获取宽高进行适配

 

2,获取宽高,动态设置

【1】DisplayMetrics第一种方法获取宽高

  •  获取屏幕宽高

 

                        DisplayMetrics displayMetrics = getResources().getDisplayMetrics();

                        // 密度

                        float density = displayMetrics.density;

                        密度(每寸像素)

                        int densityDpi = displayMetrics.densityDpi;

                        //屏幕高

                        int heightPixels = displayMetrics.heightPixels;

                        //屏幕宽

                        int widthPixels = displayMetrics.widthPixels;

        

                        Configuration configuration = getResources().getConfiguration();

                        //屏幕最小宽 得到的是dp    values-sw600dp  这里的600 就是和这个对比的 不常用

                        int smallestScreenWidthDp = configuration.smallestScreenWidthDp;

 

【2】DisplayMetrics第二种方法获取宽高

  • 获取屏幕高宽

DisplayMetrics metric = new DisplayMetrics();

getWindowManager().getDefaultDisplay().getMetrics(metric);

windowsHeight = metric.heightPixels;

windowsWight = metric.widthPixels;

  • 动态改变布局

LinearLayout production_factory = (LinearLayout)findViewById(R.id.production_factory);

LayoutParams params = production_factory.getLayoutParams();

params.height = windowsHeight / 2;

production_factory.setLayoutParams(params);

 

【3】getWindowManager

  • 获取宽高

                int width = getWindowManager().getDefaultDisplay().getWidth();

                int height = getWindowManager().getDefaultDisplay().getHeight();

                tv1.setLayoutParams(new LayoutParams((int)(width*0.5), (int)(height*0.2)));

 

 

                常规做法: 如果是自定义的控件, 没有使用xml布局文件时, 可以在代码中动态设置宽高

 

 

 

Android 屏幕适配,我写了9篇关于适配的详解。查看我的专栏

https://blog.csdn.net/cricket_7/article/category/9408535

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

兴帅_

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值