界面篇--屏幕适配基础

来源:互联网 发布:我没有说话 知乎 编辑:程序博客网 时间:2024/06/10 10:20

直接进入正题:
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在性能方面更加优秀。

0 0
原创粉丝点击