zoukankan      html  css  js  c++  java
  • 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"/>
  • 相关阅读:
    June 26th 2017 Week 26th Monday
    June 25th 2017 Week 26th Sunday
    June 24th 2017 Week 25th Saturday
    June 23rd 2017 Week 25th Friday
    June 22nd 2017 Week 25th Thursday
    2018最佳网页设计:就是要你灵感爆棚!!!
    图片素材类Web原型制作分享-Pexels
    想要打动HR的心,UX设计师求职信究竟应该怎么写?
    【UXPA大赛企业专访】Mockplus:“设计替代开发”将成为现实
    2018年最好的医疗网站设计及配色赏析
  • 原文地址:https://www.cnblogs.com/eachann/p/4142320.html
Copyright © 2011-2022 走看看