android根据分辨率自动调整字体大小的实例代码

2016-02-19 09:33 11 1 收藏

清醒时做事,糊涂时读书,大怒时睡觉,无聊时关注图老师为大家准备的精彩内容。下面为大家推荐android根据分辨率自动调整字体大小的实例代码,无聊中的都看过来。

【 tulaoshi.com - 编程语言 】

手机设备太多,分辨率也不一样,看到网上大部分的适应字体的方法是定义values320×480或value-hdpi方式去处理。
采用第一种的就惨了,很多设备的分辨率是不一样的,难道要每种都定义吗?
采用第二种的在平板电脑里没有效果。

最后还是代码的方式方便快捷。。。

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

[java]
代码如下:

//遍历设置字体 
public static void changeViewSize(ViewGroup viewGroup,int screenWidth,int screenHeight) {//传入Activity顶层Layout,屏幕宽,屏幕高 
        int adjustFontSize = adjustFontSize(screenWidth,screenHeight);
        for(int i = 0; iviewGroup.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){
                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=screenWidthscreenHeight?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 rate15?15:rate; //字体太小也不好看的 
}

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/bianchengyuyan/)

//遍历设置字体
public static void changeViewSize(ViewGroup viewGroup,int screenWidth,int screenHeight) {//传入Activity顶层Layout,屏幕宽,屏幕高
  int adjustFontSize = adjustFontSize(screenWidth,screenHeight);
  for(int i = 0; iviewGroup.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){
    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=screenWidthscreenHeight?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 rate15?15:rate; //字体太小也不好看的
}

最后在Avtivity的oncreate完后调用一下changeViewSize就行了。。。文字大了那么它对应的背景也就跟着大,所以建议控件的背景图片用9宫格类型的图片,看起来舒服。
另外附加,如果你开发的应用想在平板电脑上浏览无碍请在AndroidManifest.xml文件中的manifest节点(DTD建议放在application节点上面)里加入:
[java]
代码如下:

supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true" 
        android:resizeable="true"/

supports-screens
        android:anyDensity="true"
        android:largeScreens="true"
        android:normalScreens="true"
        android:smallScreens="true"
        android:resizeable="true"/

来源:http://www.tulaoshi.com/n/20160219/1591255.html

延伸阅读
标签: 电脑入门
一些MAC用户不喜欢字体的大小,想要调整字体,这该怎么做呢?今天图老师小编就教大家如何调整MAC字体的大小。下面是具体的方法。 MAC字体大小调整方法: OS X系统是无法调节字体大小的,尤其是10.9,但有一个折中的方法调节分辨率。打开系统偏好设置,选择显示器,缩放,调节分辨率即可。(有一个弊端是字体会变模糊) 方法二: 打...
标签: Web开发
既判断分辨率,也判断浏览器  重新完善代码,使之成为判断浏览器类型屏幕分辨率自动调用不同CSS的代码。 代码如下: SCRIPT LANGUAGE="JavaScript" !-- if (window.navigator.userAgent.indexOf("MSIE")=1) { var IE1024=""; var IE800=""; var IE1152=""; var IEother=""; ScreenWidth(IE1024...
标签: Web开发
代码如下: SCRIPT LANGUAGE="JavaScript" !-- if (window.navigator.userAgent.indexOf("MSIE")=1) { var IE1024=""; var IE800=""; var IE1152=""; var IEother=""; ScreenWidth(IE1024,IE800,IE1152,IEother) } else{ if (window.navigator.userAgent.indexOf("Firefox")=1) { var Fi...
标签: 电脑入门
分辨率怎么调?也许有朋友说,如此简单的问题还用说吗,今天讨论是分辨率的多种调整方法,以及无法调整分辨率以及调整分辨率出现的问题,希望对新手朋友有所帮助。 说在前面:分辨率又称解析度,一般理解为屏幕显示像素的多少,以1024*768为例,这个分辨率表达的意思是,屏幕将有横向1024行竖向768  行点阵组成,我们看到的各种文字、图片...
一、常用的单位:相对单位主要有:px、sp、dp 绝对单位主要有:pt、in、mm 二、单位应用总结:一般用相对单位,而不是绝对单位 1、字体的大小一般使用SP,用此单位的字体能够根据用户设置字体的大小而自动缩放 2、空间等相对距离一般使用dp(dip),随着密度变化,对应的像素数量也变化,但并没有直接的相对比例的变化。 3、px与实际像素...

经验教程

74

收藏

64
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部