android 手机适配试验

我个人觉得适配有俩个方面适配。图片方面也就是drawable适配还有就是layout的适配

1>首先将drawable适配

首先先说下放图片资源文件的文件夹

xhdpi更高分辨率
hdpi里面主要放高分辨率的图片,如WVGA (480×800),FWVGA (480×854)
mdpi里面主要放中等分辨率的图片,如HVGA (320×480)
ldpi里面主要放低分辨率的图片,如QVGA (240×320)


大家都知道,如果想适配图片必须    android:anyDensity= “true”在manifest.xml里加上如下代码,为什么呢?

<supports-screens android:largeScreens=“true”

      android:normalScreens=“true” android:anyDensity=“true”

        android:smallScreens=“true”></supports-screens>

名如其意,以上是为我们的屏幕设置多分辨率支持(更准确的说是适配大、中、小三种密度)。android:anyDensity=“true” ,这一句对整个的屏幕都起着十分重要的作用,值为true,我们的应用程序当安装在不同密度的手机上时,程序会分别加载hdpi,mdpi,ldpi文件夹中的资源。

相反,如果值设置为false,即使我们在hdpi,mdpi,ldpi文件夹下拥有同一种资源,那么应用也不会自动地去相应文件夹下寻找资源,这种情况都是出现在高密度,以及低密度的手机上,比如说一部240×320像素的手机,如果设置android:anyDensity=“false”,Android系统会将240 x320(低密度)转换为 320×480(中密度),这样的话,应用就会在小密度手机上加载mdpi文件中的资源

总结一下:

第一:android:anyDensity=“true”,系统会依据屏幕密度,自动去找对应的文件夹

(1)比如说我的手机是320x480恰好我现在mdpi没有这个资源,但是其他文件夹都有。那么他会加载哪一个文件夹呢?hdpi?xhdpi?ldpi

     测试:我选择了四张不同图片,名字相同分别放入四个文件夹中,android:anyDensity=“true” ,然后我将mdpi中此文件资源删除,运行,发现显示的

     是hdpi的图片、然后我将mdpi文件放回,将hdpi文件删除,那么显示的是xhdpi文件资源

     结论:如果android:anyDensity=“true”自动匹配到的文件夹如果找不到相应图片,如果其他drawable文件夹有的情况下那么他会在大一级drawable去            寻找.

(2)如果我现在手机分辨率是480x720呢,drawable资源并没有相应的分辨率。那他找什么文件夹下的呢,和(1)一样,他是会向上一级分辨率进行查询

第二:android:anyDensity=“false”,

(1) 如果drawable-hdpi,drawable-mdpi,drawable-ldpi三个文件夹中有同一张图片资源的不同密度表示,那么系统会去加载drawable_mdpi文件夹中的资源

(2)如果drawable-hpdi中有高密度图片,其它两个文件夹中没有对应图片资源,那么系统会去加载drawable-hdpi中的资源。

(3)如果drawable-hdpi,drawable-mdpi中有图片资源,drawable-ldpi中没有对应的图片资源,那么系统会加载drawable-mdpi文件夹中的资源

(4)如果此时mdpi文件中没有此文件呢,其他文件drawable文件夹有。他也会像上一级高分辨率文件夹查找.


2>layout适配

   

在第1点中我们已经解决了资源图片的适配问题,但是图片的大小不同势必会造成布局的差异,如果使用一个统一的布局文件,可能会造成资源图片无法完整显示在屏幕内,所以对于这种问题,解决方法是建立不同的layout文件夹,对于不同屏幕的分辨率,书写其专用的.xml文件。

多个layout文件夹在命名上有相应规则,以分辨率480x854为例,需要建立480x854像素的layout文件夹,命名:layout-854x480,有两点需要注意:①大数(854)必须在前,否则会报错;②两个数字之间的符号是小写英文字母“x”,不是乘号。系统会根据机器的分辨率来分别到这几个文件夹里面去找对应的布局文件。




如果你建立的layout文件夹的分辨率是你的eclipse加载的android工具所支持的分辨率,那么在可视化的布局界面中会自动给出屏幕分辨率、屏幕尺寸(红色箭头处)等参数,值得注意的是,如果红色箭头处是“Custom…”,那么你就要人为对其进行修改,选择合适的屏幕尺寸。

 总结:layout会根据你选择的机型,根据layout-aaaxbb进行适配,如果不存在此layout,那么向下一级别layout进行使用,如现在用的是800x480的手机,恰好布局中没有layout-800x480,但是有layout-480x320那么他就会找到此layout进行使用


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Android手机圆角适配有两种方法,一种是使用裁剪图片的方式,另一种是使用圆角布局。下面分别介绍这两种方法的实现。 1. 裁剪图片方式: 首先,在drawable文件夹下新建一个xml文件,命名为“bg_rounded_corners.xml”,并在文件中添加以下代码: ```xml <?xml version="1.0" encoding="utf-8"?> <shape xmlns:android="http://schemas.android.com/apk/res/android" android:shape="rectangle"> <corners android:radius="10dp" /> <solid android:color="@color/white" /> </shape> ``` 其中,corners标签中的radius属性设置圆角半径,solid标签中的color属性设置背景颜色。 然后,在布局文件中使用该drawable文件作为背景,如下所示: ```xml <Button android:id="@+id/btn_test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Test" android:background="@drawable/bg_rounded_corners" /> ``` 2. 圆角布局方式: 首先,在项目的build.gradle文件中添加以下依赖: ``` dependencies { implementation 'com.makeramen:roundedimageview:2.3.0' } ``` 然后,在布局文件中使用RoundedImageView作为父布局,如下所示: ```xml <com.makeramen.roundedimageview.RoundedImageView android:id="@+id/iv_test" android:src="@drawable/ic_test" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_margin="16dp" app:riv_corner_radius="10dp" app:riv_oval="false" /> ``` 其中,riv_corner_radius属性设置圆角半径,riv_oval属性设置是否为圆形。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值