据我所知(并纠正我,如果我错了),如果你想要在多个大小的设备上看起来很好(具有良好的抗锯齿)的图形按钮,你必须创建不同的一组不同大小的图像,并将图像放在不同目录的集合中。我希望找到一个有用的示例,显示要使用哪些目录集以及这些目录需要的相对大小。
顺便说一句,当我说ImageButtons时,我的意思是包含一个图像而不是文本 - 所以9patch图像不会起作用。
编辑:我特别困惑的一件事是,我经常看到人们使用不同屏幕密度的示例(例如chuck258的答案)......但是如果你制作宽度和宽度的按钮;根据密度进行调整的高度,然后按下按钮的屏幕分数会以各种不受控制的方式变化,如果你有一个高密度但小尺寸的屏幕,那么你的按钮就会过大。
编辑:继上次编辑之后,也许我应该更具体地说明我想要的...让我们说我想要一个大约10%的正方形ImageButton(我接受(仅限肖像)屏幕宽度的8%到13%的变化...我将制作多大的图像以及它们将在哪些目录中?
编辑:我收到的消息是,如果你有更多的屏幕空间,那么标准的事情就是让图标占据屏幕的一小部分。据推测,这是因为允许图标变得非常大,使它们看起来像玩具一样,或幼稚。但问题是,我正在为儿童制作游戏应用程序!所以这正是我想要的。
答案 0 :(得分:1)
我不知道我的问题是否正确,但对于图片的相对尺寸,请参阅:http://developer.android.com/design/style/devices-displays.html。
您可以使用足够大的图像作为您想要支持的最大屏幕。然后在图片中使用scaleType="fitCenter"
。一些缺点:
是的:ScaleType.FIT_CENTER
是与fitCenter
属性等效的程序设计。通常,您可以期望XML中的每个Property都有一个getter和setter。
答案 1 :(得分:1)
您应该始终为所有密度创建图像。大多数图片(如图标)应按
更多关于9patch的信息:http://developer.android.com/guide/topics/graphics/2d-graphics.html#nine-patch
答案 2 :(得分:1)
Android平台的常规做法是仅针对不同的屏幕密度提供图像,而不是针对屏幕尺寸。如果我使用平板电脑,我不想看到大图像,我想看到更多的信息。所以最好不要增加视图的大小,而是为更大的屏幕提供不同的布局。
但是如果你有一些特定的理由提供10%的屏幕宽度图像,你可以使用不同qualifiers的'drawable'文件夹。您对'可用宽度','屏幕尺寸'和'屏幕像素密度'限定符感兴趣。 例如,提供此图像:
答案 3 :(得分:0)
转到您的项目 - > Ctrl + n - > Android - > Android图标集 - >下一步 - >输入图标名称 - >下一步 - >图片 - - >浏览 - >从您的电脑中选择图片 - >无 - >完成。 多数民众赞成它会自动在4个名为
的文件夹中创建4种不同大小的单个图像1.drawable-HDPI 2.drawable-MDPI 3.drawable-xhdpi 4.drawable-xxhdpi
因此您可以在应用程序中使用此图像,它将根据设备屏幕尺寸拍摄该图像。
答案 4 :(得分:0)
你可以这样做:
package com.example.test;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.graphics.Point;
import android.os.Bundle;
import android.view.Display;
import android.view.Menu;
import android.widget.ImageButton;
public class MainActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Get ImageButton from XML
ImageButton ib = (ImageButton) findViewById(R.id.imageButton);
//Get the screen size
Display display = getWindowManager().getDefaultDisplay();
Point size = new Point();
display.getSize(size);
//10% of the screen width
int width = (int) (size.x * 0.1);
//Get and scale the Bitmap (10% of screen width)
Bitmap bitmap = getImage(R.drawable.ic_launcher, width, width);
ib.setImageBitmap(bitmap);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.main, menu);
return true;
}
public Bitmap getImage (int id, int width, int height) {
Bitmap bmp = BitmapFactory.decodeResource( getResources(), id );
Bitmap img = Bitmap.createScaledBitmap( bmp, width, height, true );
bmp.recycle();
return img;
}
}
ImageButton:
<ImageButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/imageButton" />
答案 5 :(得分:0)
这不能完全回答你的问题。但如果您只是寻找通用图标,请查看t IconicDroid library它对我帮助很大。你可以在不看质量的情况下尽可能多地调整图标大小,同时也节省了大量空间,因此apk会更小。 google Play上有一个这个库的演示。
答案 6 :(得分:0)
假设您使用了不同屏幕尺寸的10%宽度的imageButotn 32(320x480)mdpi 48(480x800 | 854)hdpi 64(640x1024(galaxy tab 7“))大hdpi 72为(720x1280(nexus 7))large-tvdipi 72为(720x1280(xperia sp等)xhdpi 80 for(800x1280(motorola xoom 10“)xlarge-mdpi 108(1080x1920(xperia z等)xxhdpi 所以你要制作所有这些尺寸的图像,并将它们放在应有的文件夹中。