我在ImageButton
RelativeLayout
文件中创建了XML
但是,当我签署我的应用程序时,它在每台设备上显示不同。如何使其与所有屏幕尺寸匹配?
注意:我尝试使用比例因子和draw
方法对其进行缩放,但它不起作用。
这是我的Activity
代码:
public class StartActivity extends Activity {
private ImageButton Play;
private ImageButton Rate;
private ImageButton Board;
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
//set to full screen
getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN);
setContentView(R.layout.activity_start);
Rate = (ImageButton) findViewById(R.id.imageButtonRate);
Rate.setY(55);
Rate.setX(40);
Board = (ImageButton) findViewById(R.id.imageButtonBoard);
Board.setY(55);
Board.setX(75);
Play = (ImageButton) findViewById(R.id.imageButtonPlay);
Play.setY(60);
Play.setOnClickListener(imageButtonPlayHandler);
}
View.OnClickListener imageButtonPlayHandler = new View.OnClickListener() {
public void onClick(View view) {
final Intent mainIntent = new Intent(StartActivity.this, MainActivity.class);
StartActivity.this.startActivity(mainIntent);
StartActivity.this.finish();
}
};
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.menu_start, menu);
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle action bar item clicks here. The action bar will
// automatically handle clicks on the Home/Up button, so long
// as you specify a parent activity in AndroidManifest.xml.
int id = item.getItemId();
//noinspection SimplifiableIfStatement
if (id == R.id.action_settings) {
return true;
}
return super.onOptionsItemSelected(item);
}
答案 0 :(得分:0)
您遇到的问题是屏幕尺寸不同和具有不同的像素密度。换句话说,您可以拥有2部具有相同物理尺寸屏幕的手机,但其中一部分的像素数比另一部分多(因此像素密度更高)。
由于这样的代码,您不清楚这一点:
Rate.setY(55);
在这种情况下" 55"是像素数,在不同的屏幕上看起来不同。在一部手机上,与具有两倍像素密度的相同尺寸的屏幕相比,它看起来将是一半大小。那是因为它有固定数量的像素。
您需要使用DisplayMetrics
和/或不同drawable
文件夹之类的内容来制作尺寸合适的图片。如果不动态计算屏幕尺寸并相应调整图像,则需要多个图像。
Android是这样做的,因为它不应该假设图像应该简单地扩展"或者"按比例缩小"在所有屏幕上。如果它做出了这个假设,那么在很多情况下你必须做相反的事情 - 告诉Android 不自动缩放,因为它看起来很奇怪或者具有不可接受的性能或图像质量。