Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 是否有必要创建单独的.xml文件而不是使用DisplayMetrics?_Android_Xml - Fatal编程技术网

Android 是否有必要创建单独的.xml文件而不是使用DisplayMetrics?

Android 是否有必要创建单独的.xml文件而不是使用DisplayMetrics?,android,xml,Android,Xml,我正在准备一个国际象棋游戏,我必须动态声明许多ImageView按钮。 不过,我的朋友说它不支持其他屏幕尺寸,但我听说DisplayMetrics代码;我们只能通过代码获得屏幕的宽度和高度 嗯,我使用不同的屏幕尺寸不同的可抽拉。我可以像这样在google playstore中发布我的应用程序吗?你可以这样做,但是使用xml文件会减少编写、维护和运行时执行的代码 所以,我选择标准的xml文件方式 您仍然可以使用编程方式,但接下来必须处理getWidth、getHeight并乘以密度比例因子。。。你

我正在准备一个国际象棋游戏,我必须动态声明许多ImageView按钮。 不过,我的朋友说它不支持其他屏幕尺寸,但我听说DisplayMetrics代码;我们只能通过代码获得屏幕的宽度和高度


嗯,我使用不同的屏幕尺寸不同的可抽拉。我可以像这样在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。我只是在问谷歌是否接受它?是的,为什么不?除非你没有从游戏商店里写一个游戏仿真器,否则它会自动引起你的注意!!,一个病毒或者其他恶意的东西,你可以随心所欲。