Я только начал разрабатывать приложение с помощью java, и у меня только есть опыт работы с C. В моем коде в Activity.java (в студии android) у меня есть такие вещи, как дать несколько примеров:сделать xy работать одинаково на всех устройствах Android-студии
meteorite1.setX(meteoritePlacementX(meteorite1.getX()));
meteorite1.setY(-2000);
gnome.setX(330);
gnome.setY(800);
meteorite2.setX(meteoritePlacementX(meteorite2.getX()));
meteorite2.setY(meteoritePlacementY(meteorite1.getY()));
meteorite3.setX(meteoritePlacementX(meteorite3.getX()));
meteorite3.setY(meteoritePlacementY(meteorite2.getY()));
meteorite4.setX(meteoritePlacementX(meteorite4.getX()));
meteorite4.setY(meteoritePlacementY(meteorite3.getY()));
meteorite5.setX(meteoritePlacementX(meteorite5.getX()));
meteorite5.setY(meteoritePlacementY(meteorite4.getY()));
meteoritedestruction1.setX(0);
meteoritedestruction1.setY(-2000);
meteoritedestruction2.setX(0);
meteoritedestruction2.setY(-2000);
meteoritedestruction3.setX(0);
meteoritedestruction3.setY(-2000);
meteoritedestruction4.setX(0);
meteoritedestruction4.setY(-2000);
meteoritedestruction5.setX(0);
meteoritedestruction5.setY(-2000);
star1.setX(300);
star2.setX(150);
star3.setX(50);
star4.setX(500);
star5.setX(600);
star6.setX(350);
star7.setX(80);
star8.setX(450);
tinystar1.setX(302);
tinystar2.setX(240);
tinystar3.setX(57);
tinystar4.setX(660);
tinystar5.setX(400);
star1.setY(300);
star2.setY(-300);
star3.setY(-100);
star4.setY(100);
star5.setY(300);
star6.setY(500);
star7.setY(700);
star8.setY(900);
tinystar1.setY(300);
tinystar2.setY(-400);
tinystar3.setY(-200);
tinystar4.setY(150);
tinystar5.setY(30);
и
public float meteoritePlacementX(float X){
float MeteoriteNewX = 0f;
int random = (int)(Math.random() * 480 - 50);
MeteoriteNewX = random;
return MeteoriteNewX;
}
Какой workes хорошо, но только на моем телефоне (720 х 1280 пикселей (~ 294 точек на дюйм плотность пикселей)), который я тестировал мой код в. Теперь я опубликовал свое приложение, но на другом устройстве макет приложения полностью не синхронизирован (что имеет смысл для меня сейчас, потому что x и y разные для каждого экрана). Кнопки и изображения работают нормально, но движущийся объект, например,
meteorite1.setY(meteorite1.getY() + 20);
, где я использую x и y, разбиты на другие устройства. Я использую относительный макет.
Короче говоря, Есть ли способ изменить x и y, поэтому он становится относительно экрана? В противном случае мне нужно изменить весь код.
Да вы совершенно правы! Но если я изменяю значения x и y, я делаю его совместимым с другим устройством, но мое оригинальное устройство не может нормально запускать приложение, верно? Как я могу заменить как meteorite1.setY (meteorite1.getY() + 20); поэтому он становится относительным? С разрешением dpi? –
@KingRool Обновлен мой ответ – CodeMonkey