Android 是否有必要创建单独的.xml文件而不是使用DisplayMetrics?
我正在准备一个国际象棋游戏,我必须动态声明许多ImageView按钮。 不过,我的朋友说它不支持其他屏幕尺寸,但我听说DisplayMetrics代码;我们只能通过代码获得屏幕的宽度和高度Android 是否有必要创建单独的.xml文件而不是使用DisplayMetrics?,android,xml,Android,Xml,我正在准备一个国际象棋游戏,我必须动态声明许多ImageView按钮。 不过,我的朋友说它不支持其他屏幕尺寸,但我听说DisplayMetrics代码;我们只能通过代码获得屏幕的宽度和高度 嗯,我使用不同的屏幕尺寸不同的可抽拉。我可以像这样在google playstore中发布我的应用程序吗?你可以这样做,但是使用xml文件会减少编写、维护和运行时执行的代码 所以,我选择标准的xml文件方式 您仍然可以使用编程方式,但接下来必须处理getWidth、getHeight并乘以密度比例因子。。。你
嗯,我使用不同的屏幕尺寸不同的可抽拉。我可以像这样在google playstore中发布我的应用程序吗?你可以这样做,但是使用xml文件会减少编写、维护和运行时执行的代码 所以,我选择标准的xml文件方式
您仍然可以使用编程方式,但接下来必须处理getWidth、getHeight并乘以密度比例因子。。。你得做点数学 这可以在没有XML的情况下完成,但我会使用画布下棋 也许是这样的:
private Paint createChessrBoard(int size)
{
Bitmap bitmap = Bitmap.createBitmap(size* 2, size* 2, Bitmap.Config.ARGB_8888);
Paint fill = new Paint(Paint.ANTI_ALIAS_FLAG);
fill.setStyle(Paint.Style.FILL);
fill.setColor(0x22000000);
Canvas canvas = new Canvas(bitmap);
Rect rect = new Rect(0, 0, size, size);
canvas.drawRect(rect, fill);
rect.offset(size, size);
canvas.drawRect(rect, fill);
Paint paint = new Paint(Paint.ANTI_ALIAS_FLAG);
paint.setShader(new BitmapShader(bitmap, BitmapShader.TileMode.REPEAT, BitmapShader.TileMode.REPEAT));
return paint;
}
您可以使用它来获取设备DPI
int dpi = getResources().getDisplayMetrics().density;
使用Genymotion emulator并检查它在不同屏幕大小下的外观。或者在Android Studio上使用预览模式,并在那里检查您同时看到多个不同的设备布局的位置。实际上,我的模拟器在Android Studio中不工作。我只在手机上调试所有代码。那么这个GenyMotion emulator是其他的还是只与android studio集成?不管你怎么说都是对的,但你不认为它增加了应用程序的复杂性,如果你使用xmls会更好。我必须动态声明许多ImageView按钮-不,你选择这样做。其他程序员会采取其他方法来制作现有ImageView小部件的动画,使用画布渲染整个内容,在OpenGL中渲染整个内容,等等。我认为xml会使你的应用程序更复杂,因为在一个布局上大约有100个视图,这是不推荐的。我也希望这样做,兄弟,但我必须动态地定义许多ImageView。我只是想为每一个可能的屏幕尺寸发布。那么,不使用不同的.xml是可能的吗?因为我很容易获得屏幕宽度和高度,并且我根据这个比率生成ImageView。我只是在问谷歌是否接受它?是的,为什么不?除非你没有从游戏商店里写一个游戏仿真器,否则它会自动引起你的注意!!,一个病毒或者其他恶意的东西,你可以随心所欲。