我有5个按钮,background_button图片大小为267x63。我在ldpi mdpi hdpi xhdpi中复制了分辨率为267x63的所有background_button。 当我尝试运行我的应用程序时,按钮在2,7" QWGA但在平板电脑模式下很小。
在ldpi mdpi hdpi和xhdpi中,我的background_button的最佳升级是什么?
xml按钮:
<Button
android:id="@+id/button5"
android:layout_width="230dp"
android:layout_height="60dp"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:background="@drawable/a"
android:textColor="#FFFFFF"
android:textStyle="bold" />
如果我缩放background_button并设置它:
android:layout_width="wrap_content"
android:layout_height="wrap_content"
我的按钮很严格...... 你可以帮帮我吗?
答案 0 :(得分:4)
实际上,您不应将相同的图像放在所有文件夹-ldpi,-mdpi,-hdpi。
让我们想象一下,您想要支持xxhdpi设备。您为xxhdpi创建映像(例如1Mb)并将其放到所有文件夹中。 你会在ldpi设备上获得什么?图像将被缩放。屏幕上的图像质量会很糟糕。 另外一件事:如果你想在屏幕上同时拥有100个图像,每个图像为2-5Mb,并为xxhdpi设备创建所有这些图像,那么你可以在ldpi设备上获得OutOfMemoryError。
因此,最佳做法是不要将相同的图像放到所有文件夹中。 如果您有一些独立于分辨率的图像,那么您可以将它们放入可绘制文件夹(不带后缀)。但是你不应该将相同的图像放到ldpi和xxhdpi文件夹中。
因此调整大小的答案非常糟糕。
看看这个article
At&#34;替代抽奖&#34;段。 在此图片上
你可以看到,对于xhdpi设备,你应该有比mdpi大2倍的图像。 等等。
希望有所帮助
答案 1 :(得分:1)
您可以使用以下代码根据屏幕分辨率显示 -
Display display = ((WindowManager) getSystemService(WINDOW_SERVICE)).
getDefaultDisplay();
int screenWidth = display.getWidth();
int screenHeight = display.getHeight();
调整图片大小的代码---
private Bitmap resizeImage( final Bitmap image) {
Bitmap resizedImage = null;
if(image != null)
{
int maxHeight = 80; //actual image height coming from internet
int maxWidth = 150; //actual image width coming from internet
int imageHeight = image.getHeight();
if ( imageHeight > maxHeight )
imageHeight = maxHeight;
int imageWidth = (imageHeight*image.getWidth()) // image.getHeight();
if ( imageWidth > maxWidth ) {
imageWidth = maxWidth;
imageHeight = (imageWidth*image.getHeight()) // image.getWidth();
}
resizedImage = Bitmap.createScaledBitmap(
image, imageWidth, imageHeight, true);
}
return resizedImage;
}
答案 2 :(得分:1)
我的应用程序也支持多种屏幕尺寸,krossovochkin提供的链接是最好的。然而,对于我的应用程序,我使用了以下宽度尺寸似乎工作正常,分辨率非常适合我需要的东西:
ldpi - 75px(120dpi分辨率)
mdpi - 100px(160dpi分辨率)
hdpi - 150px(240dpi分辨率)
xhdpi - 200px(320dpi分辨率)
但这些都取决于你将要在按钮上显示的内容 注意:确保您按下DOWN not not!!
另请参阅此device display
答案 3 :(得分:1)
你做错了。您不能只将理智的图像放在所有文件夹中 - 您需要为每个存储桶正确缩放。作为解决方案,您应该考虑在一个目标密度中设计所有图形(即xhdpi
),然后将其缩小以匹配存储桶要求。由于比例因子已知,您可以通过多种方式执行此操作(也可以使用以下工具:9patch resizer,FRED,Drawable Resizer或其他方式。
请参阅开发者网站上的这篇Supporting Multiple Screens文章。
答案 4 :(得分:0)
尝试使用此...
<Button
android:id="@+id/button5"
android:layout_width="230dip"
android:layout_height="60dip"
android:layout_alignLeft="@+id/textView1"
android:layout_below="@+id/textView1"
android:background="@drawable/a"
android:textColor="#FFFFFF"
android:textStyle="bold" />
答案 5 :(得分:0)
您应该创建不同大小的图像,并将它们放在相应的文件夹drawable-mdpi
,drawable-hdpi
等中。您不应修改xml代码中的值。查看developer.android的文章。您需要从一个比例开始,例如xxxhdpi
,然后从那里缩小图像的密度mdpi,hdpi,xhdpi,xxhdpi。