【问题标题】:android move image from one place to another place on different screen size and resolutionsandroid在不同的屏幕尺寸和分辨率上将图像从一个地方移动到另一个地方
【发布时间】:2023-03-24 14:46:01
【问题描述】:

我是安卓新手。我想做ludo游戏。我设置了与这个游戏相关的所有东西。但我想将 TOKEN 从一个地方移动到另一个不同的屏幕,例如(Nexus 6、三星 Note 5、Moto G3 等)。但问题是每个屏幕尺寸(宽度 x 高度)都不同。这就是为什么我没有在屏幕上设置正确的 x 和 y 位置。我参考了屏幕高度和宽度来获取屏幕上的下一个位置(x 和 y)以在屏幕上移动 TOKEN。我正在为 Ludo Dashboard 拍摄静态图像。这就是为什么我不知道如何移动。

例如: 我的屏幕如下,

  1. 从原点到原点: 在这种情况下,每个屏幕的翻译都发生了变化。因为我正在参考屏幕高度和宽度进行移动。 对于该代码如下,

    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();
    
  2. 从家到公共路线: 在这种情况下,它的工作正常。 bt 对于不同的屏幕,它的移动不同。

所以,我的问题是,我该如何移动以及将图像从一个位置移动到另一个位置时应该参考什么。我为此花费了太多时间。请帮帮我。

【问题讨论】:

    标签: android resolution screen-size


    【解决方案1】:

    所以,我试图想出一个使用简单的单一方法来解决您的问题的解决方案。我不确定它是否有效,我没有通过实际编码来尝试它!

    我假设您已将背景静态图像设置为将其大小(宽度)缩放为屏幕的 100%,您的静态图像是正方形(通常是卢多板)。另外我在这里考虑的是屏幕宽度小于屏幕高度。如果是相反的方式,则交换公式符号。

    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 像素。 我希望这行得通。

    【讨论】:

    • 它的工作...但在路径中,同样的问题...因为微小的改变会成为大问题...如果有其他解决方案请帮助我...
    猜你喜欢
    • 2015-12-21
    • 2017-07-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-25
    • 1970-01-01
    • 2023-01-11
    相关资源
    最近更新 更多