样式、主题、屏幕适配与国际化
共性:
1.xml文件中定义
2.可以继承父类样式或者主题
3.查看范例:
一、样式
二、主题
三、屏幕适配
一些经典屏幕的dp
320dp: a typical phone screen (240x320 ldpi, 320x480 mdpi, 480x800 hdpi, etc).
480dp: a tweener tablet like the Streak (480x800 mdpi).
600dp: a 7” tablet (600x1024 mdpi).
720dp: a 10” tablet (720x1280 mdpi, 800x1280 mdpi, etc).
dp和像素之间的转换关系。
mdpi时1像素=1dp,; hdpi时,1.5像素=1dp
例一:宽度1280*800的平板
在资源:value-w1280dp,value-w800dp,时,横屏下使用value-w1280dp的资源,竖屏使用value-w800dp的资源。
在资源:value-sw800dp,value-sw1080dp时,横屏下使用value-sw800dp的资源,竖屏下仍然使用value-sw800dp的资源。
在上诉四中资源同时存在,则优先采用sw资源,value-sw800dp
获取屏幕像素和dp的方法。
TextView t =newTextView(this);
t.setText("分辨率:"+getString(R.string.test));
// 方法1 Android获得屏幕的宽和高
intscreenWidth;
intscreenHeight;
WindowManager windowManager = getWindowManager();
Display display = windowManager.getDefaultDisplay();
screenWidth = display.getWidth();
screenHeight = display.getHeight();
// 方法2
DisplayMetrics dm =newDisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
//获得手机的宽度和高度像素单位为px
String str ="\n 方法1 手机屏幕分辨率为:"+ screenWidth +" * "+ screenHeight +"/n方法2 手机屏幕分辨率为:"+ dm.widthPixels +" * "+ dm.heightPixels;
finalfloatscale =this.getResources().getDisplayMetrics().density;
t.setText(t.getText()+str +"\n密度:"+scale +"dip:"+px2dip(this, screenWidth));
setContentView(t);
如果布局采用layout-sw720dp ,layout-sw1280dp等根据屏幕的分辨率来适配的,则布局属性应采用px像素值来决定而不是采用dp单位
如果布局采用layout-hdpi,layout-mdpi,layout-ldpi等根据屏幕的dpi来适配的,,则布局属性应采用dp单位。
四、国际化
附常见错误
1.文字显示
android:gravity="center"是对textView中文字居中
android:gravity="center_vertical|left"TextView文字垂直靠左居中
android:layout_gravity="center"是对textview控件在整个布局中居中
属性可选的值还有:top、bottom、left、right、center_vertical、fill_vertical、center_horizontal、fill_horizontal、fill、clip_vertical
2.换行显示
源字符串中要换行的地方加上 \n
比如 ab\ncd
显示为 ab
cd
或者设置textview的宽度,比如:
android:width="40px"
这样超长后就会自动换行