Java - различные способы выцветания и отображения изображений - PullRequest
0 голосов
/ 14 октября 2018

Я начинаю изучать Java, и я наткнулся на примерный размер, где мне нужно постепенно затушевывать одно изображение и отображать его, затухая в другом изображении.

Мое решение этого универсального размера состоит в том, чтобы иметь один imageView и затуханиепервое изображение, затем переключение источника изображения на второе изображение и постепенное исчезновение imageView, чтобы оно отображало новое изображение.Сделав это, он отобразит все изображения, которые я хочу, и затем исчезнет с новым изображением.

это мой код программы:

public void fade(View view){

    ImageView simpsonImageView = findViewById(R.id.simpsonsImageView);

    simpsonImageView.animate().alpha(0f).setDuration(3000);
    simpsonImageView.setImageResource(R.drawable.bart);
    simpsonImageView.animate().alpha(1f).setDuration(3000);
    simpsonImageView.animate().alpha(0f).setDuration(3000);
    simpsonImageView.setImageResource(R.drawable.lisa);
    simpsonImageView.animate().alpha(1f).setDuration(3000);
}

Теперь я видел вУчебник Я учусь на том, что репетитор использовал разные изображения для каждого изображения.Я хотел знать, какое решение является правильным или, по крайней мере, приемлемым среди этих двух.Или это действительно важно, и оба решения хороши.

1 Ответ

0 голосов
/ 14 октября 2018

Есть одна вещь, которую вы можете достичь только при использовании двух ImageView с: вы можете пометить два изображения таким образом, чтобы экран никогда не был полностью пустым.

Однако в контексте вашего упражнения вытолько хочу обмениваться изображениями последовательно.

С точки зрения производительности, один ImageView может быть лучше, чем два, потому что он, очевидно, займет меньше памяти и процессорного времени, но я сомневаюсь, что это окажет заметное влияние насовременные устройства.

Так что, если вы не анимируете много картинок одновременно (подумайте о футбольных командах вместо Симпсонов), оба решения хороши.

Обратите внимание, что с вашим кодом «как есть» анимация вообще не будет видна, и на экране появится ImageView, показывающий только второе изображение.Это потому, что animate() запускает анимацию, но не ждет, пока анимация не закончится.Поэтому вам нужно работать с AnimationListener или использовать Handler.postDelayed() для смены изображений и запуска следующей анимации только после завершения предыдущей.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...