手机设备太多,分辨率也不一样,看到网上大部分的适应字体的方法是定义values320×480或value-hdpi方式去处理。
采用第一种的就惨了,很多设备的分辨率是不一样的,难道要每种都定义吗?
采用第二种的在平板电脑里没有效果。
最后还是代码的方式方便快捷。。。
//遍历设置字体
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节点上面)里加入:
<supports-screens
android:anyDensity="true"
android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:resizeable="true"/>
分享到:
相关推荐
标题提到的“android根据分辨率自动调整字体大小的实例代码”提供了一种通过代码实现自适应字体大小的方法,避免了针对不同分辨率创建多个values资源目录的麻烦。 首先,我们要理解Android屏幕尺寸和密度的概念。...
"Android字体大小自适应不同分辨率的解决...Android 字体大小自适应不同分辨率的解决办法是通过使用资源文件夹机制和 dimens.xml 文件来实现的,可以根据不同分辨率自动调整字体大小,提高应用程序的兼容性和可读性。
当考虑不同设备和屏幕尺寸时,推荐使用sp作为字体大小单位,因为它是根据用户设定的字体缩放比例自动调整的。同时,确保字体文件支持多种字符集,以适应不同语言的需求。 7. **自定义View类**: 如果需要更复杂的...
字体自适应则是指在不同屏幕密度和分辨率的设备上,字体大小能自动调整,保持视觉一致性。Android系统提供了一种名为sp(scale-independent pixel)的单位,它会根据用户的字体大小设置自动缩放。在XML布局文件中,...
这个方法接受一个浮点数参数,单位为sp(scale-independent pixels),它会根据用户的字体大小设置进行自动调整。例如,`textView.setTextSize(TypedValue.COMPLEX_UNIT_SP, 16)`将设置文本大小为16sp。 2. **本地...
修改字体(font)大小(size) Android Studio 默认编辑器(Editor)的方案(Scheme)是无法... 您可能感兴趣的文章:Android编程实现自动调整TextView字体大小以适应文字长度的方法android根据分辨率自动调整字体大小的实例代
- **使用相对布局(RelativeLayout)和约束布局(ConstraintLayout)**:它们可以根据父容器和相邻视图自动调整大小,适合多种屏幕尺寸。 - **使用比例单位(dp和sp)**:dp(density-independent pixels)用于...
3. **使用比例尺寸单位**:使用dp(density-independent pixels)作为尺寸单位,它会根据设备密度自动调整,避免因屏幕密度不同导致的显示问题。同时,sp(scale-independent pixels)用于字体大小,保证在不同密度...
同时,为了保证在不同设备和屏幕分辨率下的效果,可以考虑使用dp单位而不是像素单位来设定字体大小的最小值和最大值。 总之,实现`TextView`的字体自适应控件大小是一个实用的技巧,能够提升应用的易用性和视觉效果...
4. 布局维度使用wrap_content和match_parent:这可以让元素根据其内容或父容器自动调整大小。 5. 资源限定符:利用资源目录如layout-sw600dp、layout-sw720dp等,针对不同屏幕宽度提供定制的布局。 五、百分比布局...
dp用于长度和宽度,sp用于字体大小,它们会根据设备的密度进行自动调整。 2. **资源目录适配**:Android支持在不同的资源目录下放置特定分辨率的图片和其他资源,例如`res/drawable-mdpi/`、`res/drawable-hdpi/`等...
字体大小应以sp(scalable pixels)为单位,它会根据用户的字体大小设置进行缩放,确保在任何屏幕上的可读性。 7. **使用栅格化系统(Grid System)** 将界面划分为网格,可以使布局在不同屏幕尺寸上保持一致性。...
`match_parent`使控件占据其父容器的全部宽度或高度,而`wrap_content`则让控件根据内容自动调整大小。 3. **使用密度无关像素(dp)和可缩放像素(sp)**:dp用于表示控件的尺寸,不受设备像素密度影响,而sp除了...
2. **响应式布局**:采用响应式设计原则,确保界面元素根据屏幕大小自动调整,保持良好的阅读和操作体验。 3. **定义设计规范**:建立一套适用于所有屏幕的设计规范,包括字体大小、行间距、按钮尺寸等,确保视觉...
在Android开发中,面对众多不同分辨率的设备,开发者必须采取有效的多分辨率解决方案,以确保应用程序在各种设备上都能提供良好的用户体验。以下将详细介绍Android多分辨率适应的策略。 1. **资源目录结构** ...
为了实现跨设备的适配,Android开发者通常会根据设备的像素密度来调整UI元素的大小。例如,一个16dp(density-independent pixel)的图片在mdpi设备上实际宽度为16px,而在hdpi设备上则为24px(16 * 1.5)。 了解并...
dp是一种与密度无关的像素单位,它会根据设备的密度自动调整。sp则是在dp基础上,考虑了用户设置的字体大小缩放因子,常用于文本的显示,确保在不同设备上都能保持合适的阅读体验。 屏幕适配主要涉及以下几个方面:...
在本案例中,我们讨论的是一个名为"Android-可实现三级联动的选择器高仿iOS的滚轮控件字体大小自适应"的项目,它旨在提供一种高度定制的滚轮视图,同时能够自动调整字体大小以适应不同的屏幕尺寸和内容。 首先,这...