Android屏幕简单适配

Android 常用手机屏幕大小有 4.5、 4.7、 5.0、 5.5、 5.7、 6.0 等。常用的屏幕分辨率有 320x480、480x800、720x1280、1080x1920。面对多种多样大小的手机,屏幕的适配也成为了一个重要的问题。

下面就分享一波简单的屏幕适配,下面直接看一个简单的例子;

上面是一个设计图,可以看出图片大小为 165 dp,在写程序时,将图片大小设置为固定的 165 dp时,在分辨率 720*1280 、 屏幕尺寸 4.7 和 分辨率1080*1920 、屏幕尺寸 6.0 显示效果分别如下:

              

可以看出在 4.7 寸的屏幕下显示是还算正常的,在 6.0 寸的屏幕下显示有点小。

那么怎么做才能看起来正常呢。

下面是适配的思路:

首先获取到屏幕的宽度(单位是px),然后看设计图可知:图片距离左边距离为 15dp ,距离右边距离也是 15dp ,两个图片之间的距离也是 15dp,这样一排有两张图片,也就是就会有三个 15dp 即 45dp 。可以得出下面的公式(使用时要将 45dp 转化为 px ):

图片宽度 = (屏幕宽度 - 45dp) / 2

具体代码如下:

        <!-- 加入layout_marginLeft="15dp" -->
        <android.support.v7.widget.RecyclerView
            android:id="@+id/recyclerView"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="15dp"/>
        //screenWidth:获取屏幕的宽度,单位px
        DisplayMetrics dm = new DisplayMetrics();
        getWindowManager().getDefaultDisplay().getMetrics(dm);
        int screenWidth = dm.widthPixels;
        //px :30dp转化为px (因为在上面recyclerview中加入距离左侧15dp)
        float dp = 30;
        float scale = getResources().getDisplayMetrics().density;
        int px = (int) (dp * scale + 0.5f);
        //viewWidth :图片的宽度
        viewWidth = (screenWidth - px) / 2;

这样就可以计算出图片的宽度,因为图片是正方形的,所以宽高都是一样的大小。

最后在 adapter 中动态设置图片的宽高即可,代码如下:

        ViewGroup.LayoutParams layoutParams = holder.rl_icon.getLayoutParams();
        layoutParams.height = viewWidth;
        layoutParams.width = viewWidth;
        holder.rl_icon.setLayoutParams(layoutParams);

这样简单的屏幕适配方案就完成了。来看一下最终两个屏幕下的效果(左4.7、右6.0):

          

适配成功。

猜你喜欢

转载自blog.csdn.net/wuqingsen1/article/details/86597760