Android 根据屏幕分辨率自动调整字体大小
1、在oncreate 里获取手机屏幕宽和高度
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);// 取得窗口属性
int screenWidth = dm.widthPixels;// 窗口的宽度
int screenHeight = dm.heightPixels;// 窗口高度
2、在oncreate后获取Activity的Layout
ViewGroup viewGroup=(ViewGroup)this.findViewById(android.R.id.content);
ChangeView.changeViewSize(viewGroup, screenWidth, screenHeight);
3、ChangeView 代码如下
public class ChangeView {
// 遍历设置字体
public static void changeViewSize(ViewGroup viewGroup, int screenWidth,
int screenHeight) {// 传入Activity顶层Layout,屏幕宽,屏幕高
int adjustFontSize = adjustFontSize(screenWidth, screenHeight);
for (int i = 0; i < viewGroup.getChildCount(); i++) {
View v = viewGroup.getChildAt(i);
if (v instanceof ViewGroup) {
changeViewSize((ViewGroup) v, screenWidth, screenHeight);
} else if (v instanceof Button) {// 按钮加大这个一定要放在TextView上面,因为Button也继承了TextView
((Button) v).setTextSize(adjustFontSize + 2);
} else if (v instanceof TextView) {
((TextView) v).setTextSize(adjustFontSize);
/*
* if(v.getId()== R.id.title_msg){//顶部标题 ( (TextView)v
* ).setTextSize(adjustFontSize+4); }else{ ( (TextView)v
* ).setTextSize(adjustFontSize); }
*/
}
}
}
// 获取字体大小
public static int adjustFontSize(int screenWidth, int screenHeight) {
screenWidth = screenWidth < screenHeight ? screenWidth : screenHeight;
/**
* 1. 在视图的 onsizechanged里获取视图宽度,一般情况下默认宽度是320,所以计算一个缩放比率 rate = (float)
* w/320 w是实际宽度 2.然后在设置字体尺寸时 paint.setTextSize((int)(8*rate));
* 8是在分辨率宽为320 下需要设置的字体大小 实际字体大小 = 默认字体大小 x rate
*/
int rate = (int) (5 * (float) screenWidth / 320); // 我自己测试这个倍数比较适合,当然你可以测试后再修改
return rate < 15 ? 15 : rate; // 字体太小也不好看的
}
}
//方法转自http://hy0664.iteye.com/blog/1360051
4、如果你开发的应用想在平板电脑上浏览无碍请在AndroidManifest.xml文件中的manifest节点(DTD建议放在application节点上面)里加入:
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"/>
Android 根据屏幕分辨率自动调整字体大小的更多相关文章
- Android 获取屏幕分辨率
原文:Android 获取屏幕分辨率 得到一个屏幕尺寸的三种方法如下: // 通过WindowManager获取 DisplayMetrics dm = new Displ ...
- Unity3D Android手机屏幕分辨率问题
Android手机屏幕分辨率五花八门,导致开发时不好把握,还好各个引擎对这个屏幕分辨率问题都有较好的处理方式:unity3D 也为我们提供了一个不错的解决方案. 在Unity3D 进行 android ...
- 获取Android设备屏幕分辨率
1.Android 4.3引入的wm工具: a.获取Android设备屏幕分辨率: adb shell wm size b.获取android设备屏幕密度: adb shell wm density ...
- C# Winform Label内容根据其宽度自动调整字体大小
C# Winform Label内容根据其宽度自动调整字体大小 项目,有个要求,Label中显示的内容,能够根据其宽度自动调整字体的大小进行显示,刚刚开始的时候,总是想着通过不同的方法来直接测量内容的 ...
- android开发 textview根据字数长度自动调整字体大小
需求:根据输入的值实时显示到textview中预览,但是字体大小是要自动适配的 网上有一个代码,但是在我这里不能用,注意方法:refitText 注释掉的是之前的代码 import com.cars ...
- android手机屏幕分辨率 及 sp dip(dp) px 区别 及高中低分辨率时处理
分辨率,是指单位长度内包含的像素点的数量,它的单位通常为像素/英寸(ppi).以分辨率为1024×768的屏幕来说,即每一条水平线上包含有1024个像素点,共有768条线,即扫描列数为1024列,行数 ...
- Android获取屏幕分辨率及DisplayMetrics简介
Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题. 手机的分辨率信息是手机的一项重要信息,很好的是,Android ...
- 【Android 应用开发】分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计
.主要是为了总结一下 对这些概念有个直观的认识; . 作者 : 万境绝尘 转载请注明出处 : http://blog.csdn.net/shulianghan/article/details/198 ...
- 分析各种Android设备屏幕分辨率与适配 - 使用大量真实安卓设备采集真实数据统计
一. 数据采集 源码GitHub地址 : -- SSH : git@github.com:han1202012/DisplayTest.git; -- HTTP : https://github.co ...
随机推荐
- 使用PHP生成二维码的两种方法(带logo图像)
一.利用Google API生成二维码 Google提供了较为完善的二维码生成接口,调用API接口很简单,以下是调用代码: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 ...
- Remote Direct Memory Access (RDMA)
RDMA有三类实现方式,包括RoCE,iWARP和InfiniBand.RDMA的基础是Virtual Interface Architechure (VIA). 参考文档: https://en.w ...
- A Diagram Designer
源码:http://files.cnblogs.com/jumahe/DiagramDesigner.rar 环境:VS2010
- bzoj 2152: 聪聪可可 树的点分治
2152: 聪聪可可 Time Limit: 3 Sec Memory Limit: 259 MBSubmit: 485 Solved: 251[Submit][Status] Descripti ...
- 【转载】利用jetty+Eclipse实现超轻量级web开发
之前一直使用maven的jetty插件.今天换种方式. 使用下面介绍的方式你只有一个java project就行. 开发环境更简单,debug也更方便,不需要remote debug的方式,jetty ...
- Loading CSS without blocking render
The principles behind these techniques aren't new. Filament group, for example, have published great ...
- uva 10496 Collecting Beepers
一个简单的货郎担问题,用状态压缩dp可以解决: 解法: d(i,S)=min{d(j,S-{j})+dis(i,j) | j belongs to S}; 边界条件:d(i,{})=dis(0,i). ...
- Tachyon Cluster: 基于Zookeeper的Master High Availability(HA)高可用配置实现
1.Tachyon简介 Tachyon是一个高容错的分布式文件系统,允许文件以内存的速度在集群框架中进行可靠的共享,就像Spark和 MapReduce那样.通过利用信息继承,内存侵入,Tachyon ...
- Solr -- Solr Facet 2
solr将以导航为目的的查询结果称为facet. 它并不会修改查询结果信息, 只是在查询结果上根据分类添加了count信息, 然后用户根据count信息做进一步的查询, 比如淘宝的查询列表中, 上面会 ...
- Delphi使用NativeXml访问XML文件
Delphi使用NativeXml访问XML文件 1.创建XML文件var Doc: TNativeXml;//声明上下文对象var filepath:string;//文件路径DOC:=TNativ ...