android 在不同的屏幕尺寸和分辨率下将图像从一个地方移动到另一个地方
android move image from one place to another place on different screen size and resolutions
我是 android 的新人。我想制作飞行棋游戏。我设置了与这个游戏相关的所有东西。但我想将 TOKEN 从一个地方移动到另一个地方以用于不同的屏幕,例如(Nexus 6、Samsung Note 5、Moto G3 等)。但问题是每个屏幕尺寸(宽度 x 高度)都不同。这就是为什么我没有在屏幕上设置正确的 x 和 y 位置。我参考屏幕高度和宽度在屏幕上获取下一个位置(x 和 y)以在屏幕上移动令牌。我正在为 Ludo Dashboard 拍摄静态图像。这就是为什么我不知道如何移动。
例如:
我的画面如下,
从原点位置到起始位置:
在这种情况下,每个屏幕的翻译都发生了变化。因为我正在参考屏幕高度和宽度进行移动。
该代码如下,
DisplayMetrics displaymetrics = getResources().getDisplayMetrics();
getWindowManager().getDefaultDisplay().getMetrics(displaymetrics);
this.constant.Height = displaymetrics.heightPixels;
this.constant.Width = displaymetrics.widthPixels;
private float getheight(float val) {
return (this.constant.Height * val) / 800;
}
private float getwidth(float val) {
return (this.constant.Width * val) / 480;
}
ObjectAnimator animTranslateY = ObjectAnimator.ofFloat(img,
"translationY", blue_1.getY() + getheight(67));
animTranslateY.setDuration(GameConstants.DURATION);
ObjectAnimator animTranslateX = ObjectAnimator.ofFloat(img,
"translationX", blue_1.getX() + getwidth(128));
animTranslateX.setDuration(GameConstants.DURATION);
AnimatorSet anim = new AnimatorSet();
anim.addListener(new Animator.AnimatorListener() {
@Override
public void onAnimationStart(Animator animator) {
}
@Override
public void onAnimationEnd(Animator animator) {
}
@Override
public void onAnimationCancel(Animator animator) {
}
@Override
public void onAnimationRepeat(Animator animator) {
}
});
anim.play(animTranslateX);
anim.play(animTranslateY);
anim.start();
从家到常见的溃败:
在这种情况下,它工作正常。 bt 不同的屏幕它的移动是不同的。
所以,我的问题是我如何移动以及将图像从一个位置移动到另一个位置应该参考什么。我为此花了太多时间。请帮助我。
所以,我试图想出一个解决方案,使用简单的单一方法来解决你的问题。我不确定它是否有效,我没有通过实际编码来尝试它!
我假设您已将背景静态图像设置为将其大小(宽度)缩放到屏幕的 100%,您的静态图像是一个正方形(通常是 ludo 板)。另外我在这里考虑屏幕宽度小于屏幕高度。如果相反,则交换公式符号。
让
screenH = screen height in pixels;
screenW = screen width in pixels;
bgW = width of staticbackgroundimage in pixels;
bgH = height of staticbackgroundimage in pixels;
所以现在,如果您想在背景静态 ludo 图像中水平移动 'p' 像素,那么假设您必须在屏幕上移动 x 个像素。 x可以计算如下:
x= p*screenW/bgW;
此外,如果您想在背景静态 ludo 图像中垂直移动 'q' 个像素,那么假设您必须在屏幕上移动 y 个像素。 y可以计算如下:
图像在屏幕上的高度将为(以像素为单位):
screenHimage=bgH*screenW/bgW;
y=q*screenHimage/bgH;
所以如果你想移动原始图像中的 p 和 q 像素,现在移动屏幕上的 x 和 y 像素。
我希望这有效。
我是 android 的新人。我想制作飞行棋游戏。我设置了与这个游戏相关的所有东西。但我想将 TOKEN 从一个地方移动到另一个地方以用于不同的屏幕,例如(Nexus 6、Samsung Note 5、Moto G3 等)。但问题是每个屏幕尺寸(宽度 x 高度)都不同。这就是为什么我没有在屏幕上设置正确的 x 和 y 位置。我参考屏幕高度和宽度在屏幕上获取下一个位置(x 和 y)以在屏幕上移动令牌。我正在为 Ludo Dashboard 拍摄静态图像。这就是为什么我不知道如何移动。
例如: 我的画面如下,
从原点位置到起始位置: 在这种情况下,每个屏幕的翻译都发生了变化。因为我正在参考屏幕高度和宽度进行移动。 该代码如下,
DisplayMetrics displaymetrics = getResources().getDisplayMetrics(); getWindowManager().getDefaultDisplay().getMetrics(displaymetrics); this.constant.Height = displaymetrics.heightPixels; this.constant.Width = displaymetrics.widthPixels; private float getheight(float val) { return (this.constant.Height * val) / 800; } private float getwidth(float val) { return (this.constant.Width * val) / 480; } ObjectAnimator animTranslateY = ObjectAnimator.ofFloat(img, "translationY", blue_1.getY() + getheight(67)); animTranslateY.setDuration(GameConstants.DURATION); ObjectAnimator animTranslateX = ObjectAnimator.ofFloat(img, "translationX", blue_1.getX() + getwidth(128)); animTranslateX.setDuration(GameConstants.DURATION); AnimatorSet anim = new AnimatorSet(); anim.addListener(new Animator.AnimatorListener() { @Override public void onAnimationStart(Animator animator) { } @Override public void onAnimationEnd(Animator animator) { } @Override public void onAnimationCancel(Animator animator) { } @Override public void onAnimationRepeat(Animator animator) { } }); anim.play(animTranslateX); anim.play(animTranslateY); anim.start();
从家到常见的溃败: 在这种情况下,它工作正常。 bt 不同的屏幕它的移动是不同的。
所以,我的问题是我如何移动以及将图像从一个位置移动到另一个位置应该参考什么。我为此花了太多时间。请帮助我。
所以,我试图想出一个解决方案,使用简单的单一方法来解决你的问题。我不确定它是否有效,我没有通过实际编码来尝试它!
我假设您已将背景静态图像设置为将其大小(宽度)缩放到屏幕的 100%,您的静态图像是一个正方形(通常是 ludo 板)。另外我在这里考虑屏幕宽度小于屏幕高度。如果相反,则交换公式符号。
让
screenH = screen height in pixels;
screenW = screen width in pixels;
bgW = width of staticbackgroundimage in pixels;
bgH = height of staticbackgroundimage in pixels;
所以现在,如果您想在背景静态 ludo 图像中水平移动 'p' 像素,那么假设您必须在屏幕上移动 x 个像素。 x可以计算如下:
x= p*screenW/bgW;
此外,如果您想在背景静态 ludo 图像中垂直移动 'q' 个像素,那么假设您必须在屏幕上移动 y 个像素。 y可以计算如下:
图像在屏幕上的高度将为(以像素为单位):
screenHimage=bgH*screenW/bgW;
y=q*screenHimage/bgH;
所以如果你想移动原始图像中的 p 和 q 像素,现在移动屏幕上的 x 和 y 像素。 我希望这有效。