Android 根据屏幕分辨率自动调整字体大小

1、在oncreate 里获取手机屏幕宽和高度

1 DisplayMetrics dm = new DisplayMetrics();
2 getWindowManager().getDefaultDisplay().getMetrics(dm);// 取得窗口属性
3 int screenWidth = dm.widthPixels;// 窗口的宽度
4 int screenHeight = dm.heightPixels;// 窗口高度

2、在oncreate后获取Activity的Layout

1 ViewGroup viewGroup=(ViewGroup)this.findViewById(android.R.id.content);
2 ChangeView.changeViewSize(viewGroup, screenWidth, screenHeight);

3、ChangeView 代码如下

 1 public class ChangeView {
 2     // 遍历设置字体
 3     public static void changeViewSize(ViewGroup viewGroup, int screenWidth,
 4             int screenHeight) {// 传入Activity顶层Layout,屏幕宽,屏幕高
 5         int adjustFontSize = adjustFontSize(screenWidth, screenHeight);
 6         for (int i = 0; i < viewGroup.getChildCount(); i++) {
 7             View v = viewGroup.getChildAt(i);
 8             if (v instanceof ViewGroup) {
 9                 changeViewSize((ViewGroup) v, screenWidth, screenHeight);
10             } else if (v instanceof Button) {// 按钮加大这个一定要放在TextView上面,因为Button也继承了TextView
11                 ((Button) v).setTextSize(adjustFontSize + 2);
12             } else if (v instanceof TextView) {
13                 ((TextView) v).setTextSize(adjustFontSize);
14                 /*
15                  * if(v.getId()== R.id.title_msg){//顶部标题 ( (TextView)v
16                  * ).setTextSize(adjustFontSize+4); }else{ ( (TextView)v
17                  * ).setTextSize(adjustFontSize); }
18                  */
19             }
20         }
21     }
22
23     // 获取字体大小
24     public static int adjustFontSize(int screenWidth, int screenHeight) {
25         screenWidth = screenWidth < screenHeight ? screenWidth : screenHeight;
26         /**
27          * 1. 在视图的 onsizechanged里获取视图宽度,一般情况下默认宽度是320,所以计算一个缩放比率 rate = (float)
28          * w/320 w是实际宽度 2.然后在设置字体尺寸时 paint.setTextSize((int)(8*rate));
29          * 8是在分辨率宽为320 下需要设置的字体大小 实际字体大小 = 默认字体大小 x rate
30          */
31         int rate = (int) (5 * (float) screenWidth / 320); // 我自己测试这个倍数比较适合,当然你可以测试后再修改
32         return rate < 15 ? 15 : rate; // 字体太小也不好看的
33     }
34 }
35 //方法转自http://hy0664.iteye.com/blog/1360051

4、如果你开发的应用想在平板电脑上浏览无碍请在AndroidManifest.xml文件中的manifest节点(DTD建议放在application节点上面)里加入:

1 <supports-screens
2         android:anyDensity="true"
3         android:largeScreens="true"
4         android:normalScreens="true"
5         android:smallScreens="true"
6         android:resizeable="true"/>
时间: 2024-10-07 01:39:20

Android 根据屏幕分辨率自动调整字体大小的相关文章

Android 自定义TextView实现文本内容自动调整字体大小以适应TextView的大小

最近做通讯录小屏机 联系人姓名显示--长度超过边界字体变小 /**   * 自定义TextView,文本内容自动调整字体大小以适应TextView的大小   * @author yzp   */   public class AutoFitTextView extends TextView {       private Paint mTextPaint;       private float mTextSize;          public AutoFitTextView(Context

使用CSS3 Media Query技术适配Android平板屏幕分辨率和屏幕密度

使用HTML5开发移动应用时需要适配各种Android平板设备的分辨率和屏幕密度,过程实在很麻烦,最后的解决办法是使用css media query,同时匹配分辨率和屏幕密度,在每个设备上进行兼容性测试,最终保证在多数Android平板上都能较好的显示. 一个典型的针对设备的Css Media Query写法如下,可以保证页面高度充满屏幕,简单的设置height:100%是不行的. //SAMSUNG N5100, Nexus7 1, @media only screen and (min-de

Unity3D Android手机屏幕分辨率问题

Android手机屏幕分辨率五花八门,导致开发时不好把握,还好各个引擎对这个屏幕分辨率问题都有较好的处理方式:unity3D 也为我们提供了一个不错的解决方案. 在Unity3D 进行 android 游戏开发时,对于不同分辨率下的显示效果就像是摄像机的自动平移了一般,看了不少游戏,对于 Unity3D 开发 android 游戏貌似都没有做相应的屏幕分辨率的处理,而是随摄像机的自动移动,把场景做大些不至于出现空白背景. 其实 Unity3D 开发3D游戏,对于不同的分辨率,我们只需要设置 1

【转】android webview设置内容的字体大小

Enum for specifying the text size. SMALLEST is 50% SMALLER is 75% NORMAL is 100% LARGER is 150% LARGEST is 200%原文:http://www.cnblogs.com/yourancao520/archive/2012/06/14/2548900.html /**  * webview  */ WebView wv; /**  * Manages settings state for a W

Android获取屏幕分辨率及DisplayMetrics

DisplayMetrics简介: Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题. Android 提供DisplayMetircs 类可以很方便的获取分辨率.Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小, 分辨率和字体. 为了获取DisplayMetrics 成员,首先初始化一个对象如下: DisplayMetrics metrics =newD

Android获取屏幕分辨率及DisplayMetrics简介

Android 可设置为随着窗口大小调整缩放比例,但即便如此,手机程序设计人员还是必须知道手机屏幕的边界,以避免缩放造成的布局变形问题. 手机的分辨率信息是手机的一项重要信息,很好的是,Android 已经提供DisplayMetircs 类可以很方便的获取分辨率.下面简要介绍 DisplayMetics 类: Andorid.util 包下的DisplayMetrics 类提供了一种关于显示的通用信息,如显示大小,分辨率和字体. 为了获取DisplayMetrics 成员,首先初始化一个对象如

怎么限制Google自动调整字体大小

Google默认的字体大小是12px,当样式表中font-size<12px时,或者没有明确指定字体大小,则在chrome浏览器里字体显示是12px. 最近在写代码玩的时候,我也碰到了 在FF和chrome中显示的效果如下(左边是FF,右边是google,我没有设置字体大小) 用text-size-adjust属性可以限制Google调整字体大小,我添加了如下的样式之后就正常了 1: body{ 2: font-size: 20px; 3: -webkit-text-size-adjust:no

android studio 改变主题及字体大小

一丶修改主题背景 1.点击图中的小扳子图标(设置),或者点击file->setting-> 2.找到Appearance->在Theme中选择Darcula,即可改变成当前最主流的主题背景了. 二丶修改代码字体大小 1.找到font点击,旁边的Save as……按钮.名称随便自己起一个.然后就可以修改字体大小了.

Android自适应屏幕分辨率与国际化

一.当横屏切换成竖屏时,解决的办法: 在res目录下建立layout-port和layout-land两个目录,里面分别放置竖屏和横屏两种布局文件,当手机屏幕方向变化的时android系统会自动调用相应的布局文件. 当然还有办法就是不切换.要么都是横屏或者要么都是竖屏.可以在AndroidManifest.xml文件中设置, 比如某个Activity设置为android:screenOrientation="portrait" 这样就一直保持竖屏, 如果设置为 android:scre