这个问题可能被问了1000多次,我还是很困惑,这是正确的方法吗?当我在Google上搜寻时,发现了一些相关的链接link1,link2,link3等。 xml设计中的相对布局。所有布局都将位于layout-folder(如果您正在创建电话应用程序),尺寸应在dimens.xml中指定(位于值-mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi文件夹中)支持所有屏幕。
我如何给marginTop提供图像视图。我正在像这样进行计算:按比例
(1:1.5:2:3:4)-(mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi)-(10dp-15dp-20dp-30dp-40dp)。
我的方法是正确的还是?
我在drawable-(mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi)文件夹中提供了不同分辨率的不同图像。
我的问题是在values-mdpi / dimens.xml-margintop-10dp中,
values-hdpi / dimens.xml-margintop-15dp,values-xhdpi / dimens.xml-margintop-20dp等以(1:1.5:2:3:4)的比例指定不同屏幕的尺寸值是否正确?
在Main.xml中:
<RelativeLayout
android:id="@+id/rl_submain"
android:layout_width="match_parent"
android:layout_height="match_parent"
>
<ImageView
android:id="@+id/iv_papa"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="@dimen/s_mtop"
android:background="@drawable/papa1"
android:gravity="center"/>
<TextView
android:id="@+id/tv_power"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:gravity="center_horizontal"
android:layout_marginBottom="@dimen/s_mbot"
android:textSize="12sp"
android:textColor="@color/white"
android:layout_alignParentBottom="true"
android:text="@string/poweredby"/>
</RelativeLayout>
<resources>
<!--Splash-->mdpi
<dimen name="s_mtop">10dp</dimen>
<dimen name="s_mbot">2dp</dimen>
<resources>
<!--Splash-->hdpi
<dimen name="s_mtop">15dp</dimen>
<dimen name="s_mbot">3dp</dimen>
<resources>
<!--Splash-->xhdpi
<dimen name="s_mtop">20dp</dimen>
<dimen name="s_mbot">4dp</dimen>
<resources>
<!--Splash-->xxhdpi
<dimen name="s_mtop">30dp</dimen>
<dimen name="s_mbot">6dp</dimen>
<resources>
<!--Splash-->xxxhdpi
<dimen name="s_mtop">40dp</dimen>
<dimen name="s_mbot">8dp</dimen>
最佳答案
我如何给marginTop提供图像视图。
比例
(1:1.5:2:3:4)-(mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi)-(10dp-15dp-20dp-30dp-40dp)。
我的方法是正确的还是?
尺寸比例(1:1.5:2:3:4)-(mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi)是正确的,但不适用于dp / dip尺寸单位...适用于px
dp:与密度无关的像素-基于像素的抽象单位
屏幕的物理密度。这些单位相对于160 dpi
(点数/英寸)屏幕,其1dp大致等于1px。什么时候
在更高密度的屏幕上运行时,用于绘制的像素数
1dp按适合屏幕dpi的比例放大。
同样,在较低密度的屏幕上,使用的像素数
1dp会按比例缩小。
有关different dimension unit refer doc的更多详细信息
因此,按照您的示例,让marginTop = 10dp然后按照比率(1:1.5:2:3:4)-(mdpi:hdpi:xhdpi:xxhdpi:xxxhdpi)-(10px-15px-20px-30px-40px)
比意味着您还可以做marginTop = 10px,但在所有像素上都保持10px。因此dpi更高时,marginTop在这种情况下看起来会很小。
为了获得Dip / dp优于px的优势,您can refer here
sp与dp相似;但是它用于字体大小的上下文中,原因是请参考尺寸单位文档
You can also refer the converter here
尺寸应在dimens.xml(位于
值-mdpi,hdpi,xhdpi,xxhdpi,xxxhdpi文件夹)以支持所有屏幕。
再次提到尺寸问题时,您不应执行值-mdpi,hdpi ...等。因为使用单位dp,则它与屏幕密度无关,如上所述。
如果使用单位px,则可以使用值-mdpi,值-hpdi ...等,但是这又将成为手动计算的开销,并可能由于获取不需要的值而导致错误。
因此,最好将二维数值仅在屏幕尺寸方面而不在屏幕密度方面推迟。因此您的layout或values文件夹可以按照Android OS(API)版本进行设置,并且屏幕大小可以像普通,大屏幕一样,也可以按照link1,link2和Eenvicible的注释中所述
根据评论更新
如果通过Supporting Different Screens,您将意识到对于布局,我们具有文件夹结构layout-normal,layout-large,layout-large-land ...但是同样,它可能有所不同在同一链接中您可以看到drawable-mdpi。等等。在这里,我们使用的图像通常不是密度无关的,因此我们需要不同密度的相同图像,因此我们将其相应地添加到文件夹中,以获取具有诸如值的值的文件夹结构,如果您Supporting Different Language,则为values-fr
关于values-mdpi,values-hpdi我已经在上面解释过了。
请正确浏览每个链接。.bcoz我仅指官方文档
关于android - 如何在android中创建应支持所有设备的布局?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/33210975/