Во-первых, это больше вопрос об анимации, чем конкретная проблема кодирования.мне нужно заполнить широкие штрихи, оставленные исследованием, которое я проводил.
что я пытаюсь сделать:
действие должно загружаться только с видимой кнопкой переключения.когда кнопка нажата, png будет анимирован в определенную позицию относительно переключателя.Кроме того, другая кнопка будет выдвигаться из-за пределов экрана и сдвигаться, если / когда снова будет нажата кнопка переключения.
что я не могу понять:
я могу нарисовать изображение, но толькочерез XML.создание изображения и настройка фона программно ничего не делает.
когда я рисую из xml, я не могу переместить изображение, когда нажата кнопка переключения, как я хочу.когда я вызываю getPositionOnScreen (), я получаю нулевой указатель, хотя компилятор может видеть, что я имею в виду изображение, описанное как в xml, так и в коде.
я вызываю getPositionOnScreen, потому что через xml у меня естьизображение расположено за кнопкой переключения, так что оно не видно, пока не будет нажата кнопка и изображение не начнет двигаться.Идея заключается в том, что при разных размерах экрана я не буду точно знать, где находится представление, до времени выполнения.getPostionOnScreen позволяет мне получить координаты изображения, поэтому я знаю, где оно было расположено.когда у меня есть начальная позиция, я могу сказать ей «двигаться вверх» на экране из-за переключателя, просто добавляя к x или y, пока я не достигну нужного места.
это код для рисования изображения (вставлен в метод onCreate).
image= (ImageView) new ImageView(this);
image.setImageResource(R.drawable.pic);
это код, который я использую для анимации.когда кнопка нажата, она вызывает этот метод в представлении слушателя.
private void activate(){
int loc[] = new int [2];
image.getLocationOnScreen(loc);
int fromXDelta = loc[0];
int fromYDelta = loc[1];
int toYDelta = fromYDelta;
int toXDelta = fromXDelta - 30;
TranslateAnimation translateAnimation = new TranslateAnimation
(-fromXDelta, -toXDelta, -fromYDelta, -toYDelta);
translateAnimation.setDuration(500);
translateAnimation.setFillEnabled(true);
image.startAnimation(translateAnimation);
}
Я хорошо понимаю, что это ужасно неправильно и не будет работать.что мне нужно понять, так это почему.любая помощь будет приветствоваться.