在网上看了几篇关于手机适配的文章,有几篇文章题目也是Android多分辨率适配框架,作者是谷歌的小弟。文章写的真好,全文分三篇,第一二篇讲原理,第三篇讲使用。但可惜没有源码,并且第三篇还要收费。
本着开源分享的精神,我就想找一下网上有没有类似的代码可以参考,自己写一个封装成框架。别说,还真有,搜出来一篇谷歌的小弟以前写的代码片段。于是我就自己写了几个方法,把代码封装了一下。
废话不多说,先上效果图再上代码:
这是1080分辨率
这是320分辨率
代码部分:
import android.app.Activity; import android.util.DisplayMetrics; import android.util.TypedValue; import android.view.View; import android.view.ViewGroup; import android.widget.Button; import android.widget.TextView; import com.example.smalldemo.R; public class ViewScaleUtil { public static float sScale = 1.0f; public static final int BASE_SCREEN_WIDTH = 480; public static final int BASE_SCREEN_HEIGHT = 854; public static final int LAYOUT_PARAMS_TYPE_LINEAR_LAYOUT = 0; public static final int LAYOUT_PARAMS_TYPE_RELATIVE_LAYOUT = 1; public static final int LAYOUT_PARAMS_TYPE_FRAME_LAYOUT = 2; public static final int LAYOUT_PARAMS_WIDTH = 0; public static final int LAYOUT_PARAMS_HEIGHT = 1; public static final int LAYOUT_PARAMS_TOP_MARGIN = 2; public static final int LAYOUT_PARAMS_LEFT_MARGIN = 3; public static final int LAYOUT_PARAMS_BOTTOM_MARGIN = 4; public static final int LAYOUT_PARAMS_RIGHT_MARGIN = 5; public static final int LAYOUT_PARAMS_COUNT = 6; public static void setScale(Activity context) { int width, height; DisplayMetrics displayMetrics = new DisplayMetrics(); context.getWindowManager().getDefaultDisplay().getMetrics(displayMetrics); height = displayMetrics.heightPixels; width = displayMetrics.widthPixels; sScale = (float) width / BASE_SCREEN_WIDTH; } /** * 遍历根布局 * @param rootView */ public static void scaleRootView(View rootView) { if (null != rootView) { // 如果是根布局,判断是哪一个根布局 if (rootView instanceof ViewGroup) { if(rootView.getId() == R.id.rootview){ // 对根布局进行遍历