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

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

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

[java]
复制代码 代码如下:
//遍历设置字体 
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){
                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; //字体太小也不好看的 
}

//遍历设置字体
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){
    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; //字体太小也不好看的
}

最后在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"/>

时间: 2024-11-10 07:29:46

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

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

手机设备太多,分辨率也不一样,看到网上大部分的适应字体的方法是定义values320×480或value-hdpi方式去处理.采用第一种的就惨了,很多设备的分辨率是不一样的,难道要每种都定义吗?采用第二种的在平板电脑里没有效果. 最后还是代码的方式方便快捷... [java] 复制代码 代码如下: //遍历设置字体  public static void changeViewSize(ViewGroup viewGroup,int screenWidth,int screenHeight) {/

js改变文章字体大小的实例代码_javascript技巧

刚来公司的时候领导给分配的都是一些简单的简单的简单的.....任务 一次叫我把文章的字体大小变换功能写出来.在网上搜了很多都不管用!不过功夫不负有心人还是被我找到了!拿出来分享下! 复制代码 代码如下: <script type="text/javascript">    Function SetFont(size){        var divBody = document.getElementById("news_content");       

php实现在限定区域里自动调整字体大小的类实例_php技巧

本文实例讲述了php实现在限定区域里自动调整字体大小的类.分享给大家供大家参考.具体如下: 这里的php类imagefittext.class.php实现在限定的区域里自动调整字体大小的功能. <?php // Image Fit Text Class 0.1 by ming0070913 CLASS ImageFitText{ public $font, $fontsize, $width, $height; public $step_wrap, $step_fontsize; public

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

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

android 让用户选择字体大小

问题描述 android 让用户选择字体大小 看了微信android版里用户可以调整软件字体大小 这是怎么实现的呢?不会是每个button和TextView都通过代码setTextSize设置吧? 可以选择配置dimens.xml文件吗? 解决方案 也可以用canvas. 可以写字 也可以画图 解决方案二: xml文件中设置字体的时候采用SP单位,这可以通过系统调节字体大小 解决方案三: 这是用主题的吧,切换theme. 解决方案四: 我切换style中的theme

Android高仿QQ6.0侧滑删除实例代码_Android

推荐阅读: 先给大家分享一下,侧滑删除,布局也就是前面一个item,然后有两个隐藏的按钮(TextView也可以),然后我们可以向左侧滑动,然后显示出来,然后对delete(删除键)实现监听,就可以了哈.好了那就来看看代码怎么实现的吧. 首先和之前一样 自定义View,初始化ViewDragHelper: package com.example.removesidepull; import android.content.Context; import android.support.v4.wi

Android中文件的压缩和解压缩实例代码

使用场景 当我们在应用的Assets目录中需要加入文件时,可以直接将源文件放入,但这样会造成打包后的apk整体过大,此时就需要将放入的文件进行压缩.又如当我们需要从服务器中下载文件时,如果下载源文件耗时又消耗流量,较大文件需要压缩,可以使得传输效率大大提高.下面我们就学习下基本的文件压缩和解压缩.Java中提供了压缩和解压缩的输入输出流 public static void zip(String src,String dest) throwsIOException { //定义压缩输出流 Zip

html页面控制字体大小的js代码

dom对象控制显示文章字体大小的js代码 1 <head> 2 3 4 <script type="text/javascript"> 5 6 function check(size){ 7 document.getElementById("mycode").style.fontSize=size+"pt"; 8 } 9 10 </script> 11 </head> 12 13 <body&

Android TimeLine 时间节点轴的实现实例代码

整理文档,搜刮出一个Android TimeLine 时间节点轴的实现实例代码,稍微整理精简一下做下分享. 效果图 具体实现 (RecyclerView) 1.Adapter package com.haoren.timeline; import android.content.Context; import android.support.v7.widget.RecyclerView; import android.view.LayoutInflater; import android.vie