首页 > 代码库 > Android 根据屏幕分辨率自动调整字体大小
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也继承了TextView11 ((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)v16 * ).setTextSize(adjustFontSize+4); }else{ ( (TextView)v17 * ).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 rate30 */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-screens2 android:anyDensity="true"3 android:largeScreens="true"4 android:normalScreens="true"5 android:smallScreens="true" 6 android:resizeable="true"/>
Android 根据屏幕分辨率自动调整字体大小
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。