样式、主题、屏幕适配与国际化

共性:

1.xml文件中定义

2.可以继承父类样式或者主题


样式、主题、屏幕适配与国际化_第1张图片

3.查看范例:


样式、主题、屏幕适配与国际化_第2张图片

一、样式

二、主题

三、屏幕适配

一些经典屏幕的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

四、国际化

附常见错误

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"

这样超长后就会自动换行

你可能感兴趣的:(样式、主题、屏幕适配与国际化)