界面篇--屏幕适配基础
2016-08-01 17:43
309 查看
直接进入正题:
1、尽量使用 dp 及 sp , sp 一般用于字体的大小 , dp 用于控件的宽高。
2、weight的使用:
weight即比重
示例如下
控件1:
android:layout_width=”0dp”
android:layout_weight=”1”
控件2:
android:layout_width=”0dp”
android:layout_weight=”2”
控件1,2 同在LinearLayout 且 设置android:orientation=”horizontal”
则 控件1占据宽度的1/(1+2) 控件2占据2/(1+2)
注意事项:weight的比重计算是除去控件已占用后的大小的 。
示例如下:
父容器宽度为 160dp
控件1:
android:layout_width=”10dp”
android:layout_weight=”1”
控件2:
android:layout_width=”0dp”
android:layout_weight=”2”
结果: 控件1占60dp 控件2占100dp
计算方法 控件1大小= 控件1设置大小(10dp) + (总大小(160dp) - 使用的大小(10dp)) * 1/(1+2) ;
即 10 + (160 - 10) * 1 / ( 1 + 2 ) 。
3、这里介绍一种常见的适配方式,宽度靠比例适配,高度则按照效果图做下来,最后 高度通过如果有必要可以滚动条进行滚动浏览。
滚动条:ScrollView
使用中需注意 ScrollView里只能放一个子View
示例如下:
实例1
ScrollView
View
ScrollView
实例2
ScrollView
View
View
ScrollView
结果 实例1可行 实例2 不可行
4、java代码动态适配屏幕,这用处就大了。
首先是常用的工具方法,建议写成工具类放在项目中。
我们来写一个例子 java代码中使得控件宽度占据屏幕宽度的1/7
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; // 获得屏幕宽度 这个也可以写成工具方法 放到工具类里
int needWidth = width / 7 ;// 获得屏幕宽度的1/7
//利用LayoutParams设置控件宽度
android.view.ViewGroup.LayoutParams
lyViewParams= lyView.getLayoutParams();
lyViewParams.width = needWidth;
lyView.setLayoutParams(lyViewParams);
5、资源的适配。
主要是需要对应不同的分辨率请UI给出不同的图片资源,这不仅能适配不同的屏幕,使得显示效果更好, 而且,更能使得整个APP在性能方面更加优秀。
1、尽量使用 dp 及 sp , sp 一般用于字体的大小 , dp 用于控件的宽高。
2、weight的使用:
weight即比重
示例如下
控件1:
android:layout_width=”0dp”
android:layout_weight=”1”
控件2:
android:layout_width=”0dp”
android:layout_weight=”2”
控件1,2 同在LinearLayout 且 设置android:orientation=”horizontal”
则 控件1占据宽度的1/(1+2) 控件2占据2/(1+2)
注意事项:weight的比重计算是除去控件已占用后的大小的 。
示例如下:
父容器宽度为 160dp
控件1:
android:layout_width=”10dp”
android:layout_weight=”1”
控件2:
android:layout_width=”0dp”
android:layout_weight=”2”
结果: 控件1占60dp 控件2占100dp
计算方法 控件1大小= 控件1设置大小(10dp) + (总大小(160dp) - 使用的大小(10dp)) * 1/(1+2) ;
即 10 + (160 - 10) * 1 / ( 1 + 2 ) 。
3、这里介绍一种常见的适配方式,宽度靠比例适配,高度则按照效果图做下来,最后 高度通过如果有必要可以滚动条进行滚动浏览。
滚动条:ScrollView
使用中需注意 ScrollView里只能放一个子View
示例如下:
实例1
ScrollView
View
ScrollView
实例2
ScrollView
View
View
ScrollView
结果 实例1可行 实例2 不可行
4、java代码动态适配屏幕,这用处就大了。
首先是常用的工具方法,建议写成工具类放在项目中。
public final static int dp2px(Context context, float dpValue) { float density = context.getResources().getDisplayMetrics().density; return (int) (dpValue * density + 0.5f); } public final static int px2dp(Context context, float pxValue) { float density = context.getResources().getDisplayMetrics().density; return (int) (pxValue / density + 0.5f); } public static int sp2px(Context context, float spValue) { final float fontScale = context.getResources().getDisplayMetrics().scaledDensity; return (int) (spValue * fontScale + 0.5f); }
我们来写一个例子 java代码中使得控件宽度占据屏幕宽度的1/7
DisplayMetrics dm = new DisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(dm);
int width = dm.widthPixels; // 获得屏幕宽度 这个也可以写成工具方法 放到工具类里
int needWidth = width / 7 ;// 获得屏幕宽度的1/7
//利用LayoutParams设置控件宽度
android.view.ViewGroup.LayoutParams
lyViewParams= lyView.getLayoutParams();
lyViewParams.width = needWidth;
lyView.setLayoutParams(lyViewParams);
5、资源的适配。
主要是需要对应不同的分辨率请UI给出不同的图片资源,这不仅能适配不同的屏幕,使得显示效果更好, 而且,更能使得整个APP在性能方面更加优秀。
相关文章推荐
- Android-屏幕适配需要注意的地方总结
- Android dpi,dip,dp的概念以及屏幕适配
- ios8新特性屏幕适配之sizeclass
- iOS屏幕旋转学习笔记
- iOS屏幕适配
- Massary屏幕适配,自动布局
- iOS布局和屏幕适配
- 屏幕适配
- Cocos2d-x 多分辨率适配完全解析
- android屏幕适配
- android屏幕适配
- Cocos2dx游戏屏幕适配
- 分享我的百度网盘 iPhone6适配教程、自动布局教程 (视频)
- cocos2d-x 屏幕适配
- Android屏幕自适应解决办法
- Android----实现屏幕自适应
- android屏幕适配
- 适配的时候根据屏幕尺寸判断机型
- android屏幕适配