支持多种屏幕尺寸 – Android

我将在Android中开发新的应用程序。 此应用程序只能在肖像(即使是平板电脑)。 另外UI和布局devise应该在手机和平​​板电脑上类似。 我们不能改变平板电脑的布局devise,因为它有很大的使用面积。 我们必须拉伸所有的图像来匹配手机。 我们可以使用九个补丁。 但我有点混淆在多个drawable中使用图像。

根据我的分析(可能是错误的:))屏幕分为密度和大小。 我们可以使用3:4:6:8的缩放比例。 但是这个比例是以密度为基础的。 但在我的情况下,我不得不延长整个用户界面来填充平板电脑屏幕。

那么可以用于这种可以支持多种设备的应用程序的可绘图是什么。 而我们必须devise的屏幕尺寸是多less?

而这个应用程序需要近100个布局。 所以我打算保持单一的布局,并使用每个布局的重量来devise布局,而不是使用尺寸。

另外,如果我使用多个APK来支持不同的屏幕尺寸,那么可以使用哪些绘图工具来支持1.小和正常2.大3. Xlarge

我只是做了非常相似的事情 为了扩展应用程序而不创build新的布局,我使用了XML中设置的维度

res/values/dimensions.xml res/values-sw600dp/dimensions.xml -> 7+ inches res/values-sw720dp/dimensions.xml -> 10+ inches 

维度是资源文件:

 <dimen name="default_padding">11dp</dimen> 

您可以在600和720文件中增加约30%的尺寸。 然后,只需在布局中使用@dimen/default_padding ,它将被缩放

关于图片,要么你确保你拥有所有密度的资产,要么你将固定尺寸设置为ImageView和适当的scaleType

首先,你不想创build多个APK来支持多个屏幕密度。 Android提供了在一个构build中支持所有内容的所有框架,您只需要创build具有所需密度的正确的资源层次结构drawable即可。

那么你究竟需要什么…基于你的问题如下:

  • 肖像模式 :您可以在AndroidManifest文件中声明的每个Activity中使用以下命令指定:

     <activity android:name=".MainActivity" android:label="@string/app_name" android:configChanges="orientation" > ... </activity> 

    注意:根据Android文档 ,如果您将API> = 13,并使用android:configChanges属性,则还应该使用android:screenSize属性来帮助指定大小更改。

  • 各种屏幕的尺寸大小 :如所述,这也可以在资源中处理。 这是使用一个通用布局文件的最佳方法,但要将布局configuration为在众多设备上使用。 如果您不熟悉,请参阅http://developer.android.com/guide/topics/resources/more-resources.html#Dimension了解如何使用维度;

  • drawables :这听起来像这是你的问题的关键。 正如你所提到的,使用九个补丁将帮助你减less你的应用程序的足迹,并填补额外的空间(见这里和这里九个补丁更多)。 您应该支持的尺寸以及这些尺寸所需的密度在Androiddevise文档中有详细的讨论,所以我甚至不能在这里详细讨论它的细节。 我已经提供了下面的链接,尽可能多的地方,我记得这是讨论。

祝你好运!

这里有Androiddevise文档的链接,你会发现有用的(其中一些已经提到):

除了像素密度特定的文件夹之外,您还可以指定特定于屏幕大小的文件夹

 drawable/ drawable-large/ drawable-xlarge/ drawable-hdpi/ drawable-large-hdpi/ drawable-xlarge-hdpi/ drawable-xhdpi/ drawable-large-xhdpi/ drawable-xlarge-xhdpi/ 

所以你可以devise适合各种屏幕尺寸和密度的适当的graphics。 请注意,给出的屏幕尺寸类别(例如“大”)只会给出设备的实际设备像素尺寸的粗略说明,但是您将得到最小/最大dp范围的良好指导。

例如,您可能需要在手机上显示100×100的图片(屏幕尺寸为“普通”),则可以分别为100×100,150×150,200×200的drawable,drawable-hdpi,drawable-xhdpi文件夹创build图像资源。 但在7英寸的平板电脑上,即“大”屏幕尺寸的设备,你可能会在200×200上显示这个相同的图像,所以你的“可绘制的”文件夹资产将是200×200,300×300,400×400和10“平板电脑,即”xlarge“屏幕上,您可能会在300×300,450×450,600×600上显示相同的图像,因此这些图标会放在“drawable-xlarge- *”文件夹中。

所有的细节在这里:

http://developer.android.com/guide/practices/screens_support.html

首先你需要所有可能的屏幕布局

 drawable drawable-ldpi drawable-mdpi drawable-hdpi drawable-xhdpi drawable-xxhdpi // phones like s4 drawable-xlarge drawable-tvdpi // nexus 7 etc drawable-xlarge-xhdpi //tablet like nexus 10 layout : for phone layout-sw600dp layout-sw720dp 

那么你需要把所有使用9贴片图像的button等…你也可以使您的自定义绘制它会很容易和方便的工作..也可以通过使用开关每个屏幕的DPI和缩放它布局相应。

因为在我的一个项目中,我曾经使用这种技术来向每个分辨率设备显示相应的东西。

 DisplayMetrics metrics = getResources().getDisplayMetrics(); int densityDpi = (int) metrics.density ; switch (densityDpi) { case (int) 1.5: break; case (int) 2: //1.75 will be 2 in INT. break; default: break; } 

也保留所有的价值,你将用于利润率填充等价值sw600dp为tvdpi平板电脑,价值sw720dp平板电脑

最后但并非最不重要的是尽可能通用所有的东西,并把它放在drawable ..我已经看到一些脂肪酶谁使用不同的dpi的背景图案,并把它放在各自的drawable ..如果有这样的事情就像模式让你的习惯并绘制,并相应地重复,这将节省您的时间..希望它可以帮助你

为了拉伸所有图像以匹配手机,您可以使用sdp尺寸单位指定图像尺寸。 这个尺寸单位是相对于屏幕大小,所以它可以满足您的要求。