Android 按钮drawableBottom Nexus 7和Galaxy Tab 2
我正在将为Galaxy Tab 2(10.1)屏幕大小编写的应用程序调整为Nexus 7(7”)。 根据stackoverflow中的建议,我为所有密度Android 按钮drawableBottom Nexus 7和Galaxy Tab 2,android,android-drawable,Android,Android Drawable,我正在将为Galaxy Tab 2(10.1)屏幕大小编写的应用程序调整为Nexus 7(7”)。 根据stackoverflow中的建议,我为所有密度(l | m | h | xh)dpi创建了不同的图像大小,还创建了一个特定的布局-sw600dp文件夹,其中包含为7英寸屏幕修改的布局 [编辑] 我补充说 到我的Androidmanifest文件 [/编辑] 尽管进行了所有这些修改,我仍在努力使我的按钮的可绘制底部(以及顶部、左侧、右侧)在两台设备之间正确缩放 渲染图像的物理大小相同。因此
(l | m | h | xh)dpi
创建了不同的图像大小,还创建了一个特定的布局-sw600dp
文件夹,其中包含为7英寸屏幕修改的布局
[编辑]
我补充说
到我的Androidmanifest
文件
[/编辑]
尽管进行了所有这些修改,我仍在努力使我的按钮的可绘制底部
(以及顶部、左侧、右侧)在两台设备之间正确缩放
渲染图像的物理大小相同。因此,Nexus正在制作与银河系(或viceversa)一样大的图标
据我所知,这两台设备虽然物理尺寸不同,但它们共享相同的像素密度(xhdpi),这使得Nexus可以从xhdpi文件夹中拾取。
我错过了什么重要的事情吗
我应该如何调整我的drawableBottoms?您是否确保该应用程序专为高密度显示器设计?尝试在以下权限之后将其添加到清单:
<supports-screens android:largeScreens="true"
android:normalScreens="true"
android:smallScreens="true"
android:anyDensity="true"/>
好的
也许这并不是所谓的“解决方案”。但它对我来说很管用,而且考虑到我必须适应的应用程序的大小,我只花了最少的努力
下面的解决方案基本上运行得很好,但(可能)仅适用于这种特定情况,因为Galaxy Tab 2和Nexus 7具有相同的分辨率
我是如何在几乎没有工作的情况下修复它的:
不要创建分辨率较小的图像(你并不真正需要它),除非你打算在许多其他设备上安装(或已经安装)你的应用程序
创建两个值-文件夹。一个用于Galaxy Tab 2(=xlarge),另一个用于Nexus 7(=large)。修改器是屏幕的大小
在每个文件夹中放置一个dimen.xml
文件,您将分别像这样填充该文件
对于Galaxy选项卡2:
<?xml version="1.0" encoding="utf-8"?>
<resources>
[...]
<dimen name="s25sp">25sp</dimen>
<dimen name="s30sp">30sp</dimen>
<dimen name="s35sp">35sp</dimen>
[...]
<dimen name="s25dp">25dp</dimen>
<dimen name="s30dp">30dp</dimen>
<dimen name="s35dp">35dp</dimen>
[...]
</resources>
是-这是我添加的:
好的,对不起,我只有这些。
<?xml version="1.0" encoding="utf-8"?>
<resources>
[...]
<dimen name="s25sp">17sp</dimen>
<dimen name="s30sp">21sp</dimen>
<dimen name="s35sp">24sp</dimen>
[...]
<dimen name="s25dp">17dp</dimen>
<dimen name="s30dp">21dp</dimen>
<dimen name="s35dp">24dp</dimen>
[...]
</resources>
#!/usr/bin/perl
$filename = $ARGV[0];
open (FILE, $filename);
while (<FILE>) {
chomp;
if ( $_ =~ /\"[0-9]*(di?p|sp)\"/) {
my $pre = $`;
my $mat = $&;
my $pos = $';
$mat =~ s/["]+//g;
print "$pre\"\@dimen/s$mat\"$pos\n";
} elsif ( ($_ !~ /\"[0-9]*dp\"/) && ($_ !~ /\"[0-9]*sp\"/) ) {
print "$_\n";
}
}
close (FILE);
exit;