我的编程空间,编程开发者的网络收藏夹
学习永远不晚

android 分辨率适配的方法

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

android 分辨率适配的方法

以前在公司做项目的时候,遇到了分辨率的适配问题,说起来当时挺纠结的,因为没有外网,所以这个问题,都是黑暗中摸索的,尝试了许多方法,最后和徒弟们一起搞出了这个方法,具体行不行,先和大家分享下,这个方法不能说万能的,但是最起码它解决了分辨率跟密集度的关系,但是也引来一个问题,就是布局会因为图片资源小而失真,所以这也需要美工的同志多多配合的,废话不说,贴代码:
第一步,先创建一个view信息的javabean类
代码如下:
package com.zte.layout.adapter;
import android.view.View;

public class LayoutInformation
{

private View view;

private double viewWidth;

private double viewHeight;

private double viewMarginLeft;

private double viewMarginTop;

public static int R=-1;

public static int L=-2;

private int parentLayoutType;

public LayoutInformation(View view, double viewWidth, double viewHeight,
double viewMarginLeft, double viewMarginTop, int parentLayoutType)
{
this.view = view;
this.viewWidth = viewWidth;
this.viewHeight = viewHeight;
this.viewMarginLeft = viewMarginLeft;
this.viewMarginTop = viewMarginTop;
this.parentLayoutType=parentLayoutType;
}

public View getView()
{
return view;
}

public void setView(View view)
{
this.view = view;
}

public double getViewWidth()
{
return viewWidth;
}

public void setViewWidth(double viewWidth)
{
this.viewWidth = viewWidth;
}

public double getViewHeight()
{
return viewHeight;
}

public void setViewHeight(double viewHeight)
{
this.viewHeight = viewHeight;
}

public double getViewMarginLeft()
{
return viewMarginLeft;
}

public void setViewMarginLeft(double viewMarginLeft)
{
this.viewMarginLeft = viewMarginLeft;
}

public double getViewMarginTop()
{
return viewMarginTop;
}

public void setViewMarginTop(double viewMarginTop)
{
this.viewMarginTop = viewMarginTop;
}

public int getParentLayoutType()
{
return parentLayoutType;
}

public void setParentLayoutType(int parentLayoutType)
{
this.parentLayoutType = parentLayoutType;
}
}

第二步:创建一个计算方法
代码如下:
import java.util.List;
import android.app.Activity;
import android.content.Context;
import android.util.DisplayMetrics;
import android.view.View;
import android.view.ViewGroup.LayoutParams;
import android.widget.LinearLayout;
import android.widget.RelativeLayout;

public class MyLayoutAdapter
{

public double STANDARD_SCREEN_WIDTH;

public double STANDARD_SCREEN_HEIGHT;

public double CURRENT_SCREEN_WIDTH;

public double CURRENT_SCREEN_HEIGHT;

public static final double STANDARD_DENSITY = 160;

private double CURRENT_DENSITY;

private double DENSITY_RATIO;

private double WIDTH_RATIO;

private double HEIGHT_RATIO;

private double viewStandardWidth;

private double viewStandardHeight;

private double viewStandardMarginLeft;

private double viewStandardMarginTop;

private double viewCurrentWidth;

private double viewCurrentHeight;

private double viewCurrentMarginLeft;

private double viewCurrentMarginTop;

private View view;

private int parentLayoutType;

private final int LAYOUT_TYPE_RELATiVELAYOUT = LayoutInformation.R;

private final int LAYOUT_TYPE_LINEARLAYOUT = LayoutInformation.L;

private final int LAYOUTPARAMS_WARP_CONTENT = LayoutParams.WRAP_CONTENT;

private final int LAYOUTPARAMS_FILL_PARENT = LayoutParams.FILL_PARENT;
private Context context;

public MyLayoutAdapter(Context context, double standardWidth,
double standardHeight)
{
this.context = context;
getScreenSize();
STANDARD_SCREEN_HEIGHT = standardHeight;
STANDARD_SCREEN_WIDTH = standardWidth;
// 计算宽高比率
WIDTH_RATIO = CURRENT_SCREEN_WIDTH / STANDARD_SCREEN_WIDTH;
HEIGHT_RATIO = CURRENT_SCREEN_HEIGHT / STANDARD_SCREEN_HEIGHT;
}

private void getScreenSize()
{
DisplayMetrics displayMetrics = new DisplayMetrics();
((Activity) context).getWindowManager().getDefaultDisplay()
getMetrics(displayMetrics);
CURRENT_SCREEN_WIDTH = displayMetrics.widthPixels;
CURRENT_SCREEN_HEIGHT = displayMetrics.heightPixels;
CURRENT_DENSITY = displayMetrics.densityDpi;
DENSITY_RATIO = STANDARD_DENSITY / CURRENT_DENSITY;
}

public void setVi ewLayout(List<LayoutInformation> listdata)
{
for (int i = 0; i < listdata.size(); i++)
{
view = listdata.get(i).getView();
viewStandardWidth = listdata.get(i).getViewWidth();
viewStandardHeight = listdata.get(i).getViewHeight();
viewStandardMarginLeft = listdata.get(i).getViewMarginLeft();
viewStandardMarginTop = listdata.get(i).getViewMarginTop();
setLayoutParams();
viewCurrentMarginLeft = viewStandardMarginLeft * WIDTH_RATIO;
viewCurrentMarginTop = viewStandardMarginTop * HEIGHT_RATIO;
parentLayoutType = listdata.get(i).getParentLayoutType();
setLayoutByParentLayoutType();
}
}

private void setLayoutParams()
{
// 如果基准的宽是wrap_content或者fill_parent则使用原值,否则进行计算得到通配后的值
if (viewStandardWidth == LAYOUTPARAMS_WARP_CONTENT
|| viewStandardWidth == LAYOUTPARAMS_FILL_PARENT)
{
viewCurrentWidth = viewStandardWidth;
} else
{
viewCurrentWidth = viewStandardWidth * WIDTH_RATIO;
}
// 如果基准的宽是wrap_content或者fill_parent则使用原值,否则进行计算得到通配后的值
if (viewStandardHeight == LAYOUTPARAMS_WARP_CONTENT
|| viewStandardHeight == LAYOUTPARAMS_FILL_PARENT)
{
viewCurrentHeight = viewStandardHeight;
} else
{
viewCurrentHeight = viewStandardHeight * HEIGHT_RATIO;
}
}

private void setLayoutByParentLayoutType()
{
if (parentLayoutType == LAYOUT_TYPE_RELATiVELAYOUT)
{
RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(
(int) viewCurrentWidth, (int) viewCurrentHeight);
params.setMargins((int) viewCurrentMarginLeft,
(int) viewCurrentMarginTop, 0, 0);
view.setLayoutParams(params);
} else if (parentLayoutType == LAYOUT_TYPE_LINEARLAYOUT)
{
LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
(int) viewCurrentWidth, (int) viewCurrentHeight);
params.setMargins((int) viewCurrentMarginLeft,
(int) viewCurrentMarginTop, 0, 0);
view.setLayoutParams(params);
}
}

public int setTextSize(int standardSize)
{
int currentSize;
currentSize = (int) (standardSize * WIDTH_RATIO * DENSITY_RATIO);
return currentSize;
}
}

第三步,写一个接口
代码如下:
public interface InitAllView{

public void initAllView();
}

第四步:代码控制
代码如下:

private void initWildcard() {
myLayout = new MyLayoutAdapter(this, 320, 480);
listInfo = new ArrayList<LayoutInformation>();
listInfo.add(new LayoutInformation(mBtn1, LayoutParams.WRAP_CONTENT,
LayoutParams.WRAP_CONTENT, 0, 0, LayoutInformation.R));
listInfo.add(new LayoutInformation(mNowRegisterBtn, 80, 27.3, 14.7, 0,
LayoutInformation.R));
listInfo.add(new LayoutInformation(mNextRegisterBtn, 80, 27.3, 14.7, 0,
LayoutInformation.R));
// listInfo.add(new LayoutInformation(mCheckBtn, 17.3,17.3, 14.7, 0,
// LayoutInformation.L));
mBtn1.setTextSize(myLayout.setTextSize(12));
mNowRegisterBtn.setTextSize(myLayout.setTextSize(12));
mNextRegisterBtn.setTextSize(myLayout.setTextSize(12));
myLayout.setViewLayout(listInfo);
}
您可能感兴趣的文章:Android 8.0系统中通知栏的适配详解Android 8.0系统中通知栏的适配微技巧Android 8.0系统中应用图标的适配微技巧Android-屏幕适配需要注意的地方总结Android的分辨率和屏幕适配详解Android 悬浮窗权限各机型各系统适配大全(总结)Android适配安卓6.0蓝牙通讯实现过程适配Android 8.0版本更新安装与通知栏的一些坑


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

android 分辨率适配的方法

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

android 分辨率适配的方法

以前在公司做项目的时候,遇到了分辨率的适配问题,说起来当时挺纠结的,因为没有外网,所以这个问题,都是黑暗中摸索的,尝试了许多方法,最后和徒弟们一起搞出了这个方法,具体行不行,先和大家分享下,这个方法不能说万能的,但是最起码它解决了分辨率跟密
2022-06-06

Android的分辨率和屏幕适配详解

一、为什么Android要进行分辨率与屏幕适配最大的原因是碎片化,因为Android的开源措施和各个厂商的自己细微修改,结果就变成了这个样需要适配的屏幕尺寸就有这么多:这怎么可能嘛T_T。所以我们就只照顾大部分人,根据友盟的统计数据如下:所
2022-06-06

Android编程实现屏幕自适应方向尺寸与分辨率的方法

本文实例讲述了Android编程实现屏幕自适应方向尺寸与分辨率的方法。分享给大家供大家参考,具体如下: Android 屏幕自适应方向尺寸与分辨率,包括屏幕界面布局、多分辨率支持、获取屏幕尺寸、屏幕横屏与竖屏等,android 模拟器横屏,
2022-06-06

Ubuntu上Pygame游戏分辨率适配问题

在Ubuntu上使用Pygame时,可能会遇到游戏分辨率与屏幕分辨率不匹配的问题获取屏幕分辨率:使用pygame.display.get_surface().get_size()可以获取当前游戏窗口的分辨率。例如:import pyga
Ubuntu上Pygame游戏分辨率适配问题
2024-10-13

调试windows7分辨率的方法

第一步,首先依然是进入python电脑桌面,在桌面空白位置单击鼠标右键,然后鼠标箭头放到“屏幕分辨率&rdq编程uo;再用左键点击进去如下图:点击进入“屏幕分辨率&rdquophp;之后就可以看到屏幕分辨率调节窗口,
2023-06-04

vue项目适配屏幕分辨率与屏幕的缩放适配详细教程

现在很多14寸的笔记本,出厂默认就是150%的显示。导致很多时候我们的项目,自己开发的时候都是按照100%比例来开发的,上线了就会发现这个问题,今天就这个问题给出解决方案,感兴趣的朋友跟随小编一起看看吧
2022-11-13

android开发中获取手机分辨率大小的方法

所以,记录下核心代码:代码如下:DisplayMetrics metrics=new DisplayMetrics();getWindowManager().getDefaultDisplay().getMetrics(metrics);获
2022-06-06

deepin系统怎么设置屏幕分辨率?deepin分辨率的设置方法

deepin中设置分辨率是很常见的说会用,该怎么设置呢?下面我们就来看看详细的教程。 方法一、图形下设置 1、点击任务栏上的“控制中心”。2、在控制中心中选择“显示”。3、在显示中,点击&ld
2022-05-30

Android编程获取手机屏幕分辨率大小的方法

本文实例讲述了Android编程获取手机屏幕分辨率大小的方法。分享给大家供大家参考,具体如下:import android.app.Activity; import android.os.Bundle; import android.uti
2022-06-06

Win10 10162分辨率的设置解决方法

要设置分辨率,可以按照以下步骤进行操作:1. 在桌面上,右键单击空白处,然后选择“显示设置”。2. 在“显示设置”窗口中,找到“分辨率”选项。点击下拉菜单,选择您想要的分辨率。3. 点击“应用”按钮,确认更改。如果您在选择分辨率时遇到问题,
2023-09-16

linux修改分辨率的方法是什么

在Linux系统中,可以通过以下方法来修改分辨率:使用命令行工具 xrandr:可以使用 xrandr 命令来查看当前显示器的分辨率以及支持的所有分辨率选项。然后使用 xrandr 命令来修改分辨率,例如:xrandr --output <
linux修改分辨率的方法是什么
2024-03-02

windows分辨率没有合适的如何解决

这篇文章主要介绍“windows分辨率没有合适的如何解决”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“windows分辨率没有合适的如何解决”文章能帮助大家解决问题。分辨率没有合适的解决方法1、安装
2023-07-01

Android基础之使用Fragment适应不同屏幕和分辨率(分享)

最近事情很忙,一个新项目赶着出来,但是很多功能都要重新做,一直在编写代码、Debug。今天因为一个新程序要使用Fragment来做,虽然以前也使用过Fragment,不过没有仔细研究,今天顺道写篇文章记录一下Fragment的使用。这文章主
2022-06-06

Android中的字体大小怎么实现自适应不同分辨率

Android中的字体大小怎么实现自适应不同分辨率?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。一、原理如下:假设需要适应320x240,480x320分辨率。
2023-05-31

详解Flutter桌面应用如何进行多分辨率适配

这篇文章主要为大家介绍了Flutter桌面应用如何进行多分辨率适配的方法详解,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
2023-02-12

win8系统分辨率怎么调?win8系统电脑分辨率的设置方法图文教程

win8系统分辨率怎么调?相信很多用户对win8系统的一些操作都不太了解,接下来由编程网小编给大家介绍下win8系统电脑分辨率的设置方法,一起看看吧! win8系统电脑分辨率的设置方法如下所示: 将鼠标移到屏幕右上方,在弹窗的栏目中点击设置
2022-06-04

Android加载大分辨率图片到手机内存中的实例方法

还原堆内存溢出的错误首先来还原一下堆内存溢出的错误。首先在SD卡上放一张照片,分辨率为(3776 X 2520),大小为3.88MB,是我自己用相机拍的一张照片。应用的布局很简单,一个Button一个ImageView,然后按照常规的方式,
2022-06-06

win10分辨率灰色的调不了的解决方法

小编给大家分享一下win10分辨率灰色的调不了的解决方法,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!win10分辨率灰色的调不了怎么办:1、首先在win10桌面上点击鼠标右键,选择屏幕分辨率。2、调出屏幕分辨率设置窗口后
2023-06-10

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录