Урок 20. Анимация

Обсуждение уроков
Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 20. Анимация

Сообщение damager82 » 16 ноя 2012, 11:11

Android писал(а):По идее этот код должен рисовать несколько шаров и движение их. Но получаю просто белый экран. Спасибо заранее, если кто-нибудь посмотрит!
Вы нигде не создаете объекты Circle. Ни в onCreate, ни в конструкторе MyView. Т.е. Activity создается, MyView создается и все. Больше ничего не происходит.

И еще момент. У вас в конструкторе Circle создается новый Circle. Соответственно получится бесконечный процесс создания экземпляров Circle, который выдаст ошибку типа java.lang.StackOverflowError. Перенесите цикл по созданию 4-х кругов в конструктор MyView.
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

brucemax
Сообщения: 117
Зарегистрирован: 01 апр 2012, 16:09
Откуда: Минск
Контактная информация:

Re: Урок 20. Анимация

Сообщение brucemax » 23 ноя 2012, 23:21

Товарищи!!! нужна ваша помощь, не могу найти ответ. Уже 2 дня в google сижу.
Есть анимация, в ней увеличение и перемищение объекта, при запуске она сризаеться по всем бокам, потому что ее родитель чуть больше по размерам.
Как можно избежать этого, как чтоб анимация не обращала не на что внимание?
Такая же проблема.. если вьюшка запихана в layout, то она только там и трансформируется.. как сделать так, чтобы анимация распространялась на весь экран??? :?:

Android
Сообщения: 5
Зарегистрирован: 08 ноя 2012, 01:05

Re: Урок 20. Анимация

Сообщение Android » 06 дек 2012, 18:08

Вот что получилось - все работает, только еще нужны отскоки мужду шарами. Не знаю как это сделать в этом коде(((

public class MainActivity extends Activity {

public float RADIUS = 22;
public float centerX;
public float centerY;
public float evX ;
public float evY ;


@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(new MyView(this));

}

class MyView extends View {
Bundle extras = getIntent().getExtras();
String param1 = extras.getString("username");
public Paint p;

Random r = new Random();
ArrayList<Circle> _circles = new ArrayList<Circle>();




public void onDraw(Canvas c) {

for (Circle t:_circles){
float w = getWidth();
float h = getHeight();
t.centerX += t.speedX;
t.centerY += t.speedY;
float rightLimit = w - RADIUS;
float bottomLimit = h - RADIUS;

if (t.centerX >= rightLimit) {
t.centerX = rightLimit;
t.speedX *= -1;
}
if (t.centerX <= RADIUS) {
t.centerX = RADIUS;
t.speedX *= -1;
}
if (t.centerY >= bottomLimit) {
t.centerY = bottomLimit;
t.speedY *= -1;
}
if (t.centerY <= RADIUS) {
t.centerY = RADIUS;
t.speedY *= -1;
}
c.drawCircle(t.centerX, t.centerY, RADIUS, p);
// RADIUS = RADIUS+2;
postInvalidateDelayed(2000);

}}




public MyView(Context context) {
super(context);
p = new Paint();
int mValueA;
p.setColor(Color.BLACK);
if (param1.length() == 0) {
param1= "1"; mValueA = 1;
} else
mValueA = Integer.parseInt(param1);

for (int i = 0; i < mValueA; i++) {
Circle s = new Circle();

_circles.add(s);
postInvalidateDelayed(200);
}
}

class Circle {
public float centerX;
public float centerY;
public float speedX = 10;
public float speedY = 10;

protected void onSizeChanged(int w, int h, int oldW, int oldH) {
centerX = w / 2;
centerY = h / 2;
}

Circle () {
centerX = r.nextInt(400);
centerY = r.nextInt(400);
RADIUS = r.nextInt(30);
}

}


}

}

heluvet
Сообщения: 8
Зарегистрирован: 20 дек 2012, 09:48

Re: Урок 20. Анимация

Сообщение heluvet » 14 янв 2013, 06:39

Доброго дня!

Пытаюсь прикрутить костыль NineOldAndroid. Копирую jar в /libs и добавляю в Libraries. Возникает ошибка "Unknown animation name: objectAnimator..." при попытке запустить анимацию в проекте.

быстрое заполнение в xml вместо положенного <objectAnimator/> выдает
<!DOCTYPE objectAnimator PUBLIC "//UNKNOWN/" "unknown.dtd">.

В примере разработчика все хорошо работает, objectAnimator есть в списке заполнения.

Может я неправильно импортирую?

kotikkirill
Сообщения: 5
Зарегистрирован: 14 янв 2013, 00:04

Re: Урок 20. Анимация

Сообщение kotikkirill » 15 янв 2013, 04:26

Код: Выделить всё

@Override
  public void onCreateContextMenu(ContextMenu menu, View v,
      ContextMenuInfo menuInfo) {
    // TODO Auto-generated method stub

}
когда начинаю вводить public void onCreateContextMenu и нажимаю ctrl+space для показа всех возможных вариантов и автогенерации, то пишет, что нет элементов. Не понимаю, как это исправить, во всех остальных местах ctrl+space работает правильно.

ubulem
Сообщения: 1
Зарегистрирован: 11 янв 2013, 15:32

Re: Урок 20. Анимация

Сообщение ubulem » 28 янв 2013, 12:28

kotikkirill писал(а): когда начинаю вводить public void onCreateContextMenu и нажимаю ctrl+space для показа всех возможных вариантов и автогенерации, то пишет, что нет элементов. Не понимаю, как это исправить, во всех остальных местах ctrl+space работает правильно.
Начинайте вводить просто onCreate... без public void и нажимайте Ctrl + Space.

qualitat1ve
Сообщения: 6
Зарегистрирован: 18 фев 2013, 10:55

Re: Урок 20. Анимация

Сообщение qualitat1ve » 18 фев 2013, 11:00

зачем оборачивать switch'ом создание меню?

Озорная Свинья
Сообщения: 59
Зарегистрирован: 02 фев 2013, 00:03

Re: Урок 20. Анимация

Сообщение Озорная Свинья » 18 фев 2013, 13:41

kotikkirill писал(а):когда начинаю вводить public void onCreateContextMenu и нажимаю ctrl+space для показа всех возможных вариантов и автогенерации, то пишет, что нет элементов. Не понимаю, как это исправить, во всех остальных местах ctrl+space работает правильно.
Можно в Eclipse выбрать: Sourse -> Override/Implement Methods...

messenger63
Сообщения: 2
Зарегистрирован: 27 фев 2013, 03:28

Re: Урок 20. Анимация

Сообщение messenger63 » 27 фев 2013, 03:41

Добрый день.
У меня возник следующий вопрос. Например я хочу поставить анимацию на событие - нажаття на кнопку, которая еще осуществляет переход на другую Активити. Но на экране моего эмулятора, анимация почти не отражается. Начинается и далее осуществляется сразу переход. Когда я выбираю назад (в управлении телефоном кнопку жму), она продолжается дальше. Это так отражает эмулятор, или в реальных условиях эти вызовы выполняются тоже не последовательно? как этого избежать?

Аватара пользователя
damager82
Администратор
Сообщения: 1383
Зарегистрирован: 07 янв 2012, 11:32
Контактная информация:

Re: Урок 20. Анимация

Сообщение damager82 » 04 мар 2013, 16:46

messenger63 писал(а):Добрый день.
У меня возник следующий вопрос. Например я хочу поставить анимацию на событие - нажаття на кнопку, которая еще осуществляет переход на другую Активити. Но на экране моего эмулятора, анимация почти не отражается. Начинается и далее осуществляется сразу переход. Когда я выбираю назад (в управлении телефоном кнопку жму), она продолжается дальше. Это так отражает эмулятор, или в реальных условиях эти вызовы выполняются тоже не последовательно? как этого избежать?
Если вам надо, чтобы активити вызывалось после того, как анимация отработала, вешайте слушателей на событие завершения анимации.
http://developer.android.com/reference/ ... nListener)
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение

messenger63
Сообщения: 2
Зарегистрирован: 27 фев 2013, 03:28

Re: Урок 20. Анимация

Сообщение messenger63 » 05 мар 2013, 04:09

damager82 писал(а): Если вам надо, чтобы активити вызывалось после того, как анимация отработала, вешайте слушателей на событие завершения анимации.
http://developer.android.com/reference/ ... nListener)
Спасибо. Оказывается все так просто. Буду знать.

karval
Сообщения: 4
Зарегистрирован: 07 мар 2013, 01:22

Re: Урок 20. Анимация

Сообщение karval » 07 мар 2013, 01:39

у меня код один в один но анимация не работает. И еще во FrameLayout установлен id зачем?

mrandros
Сообщения: 3
Зарегистрирован: 10 мар 2013, 10:29

Re: Урок 20. Анимация

Сообщение mrandros » 11 мар 2013, 13:02

Здравствуйте.

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

Большое спасибо.

mrandros
Сообщения: 3
Зарегистрирован: 10 мар 2013, 10:29

Re: Урок 20. Анимация

Сообщение mrandros » 15 мар 2013, 06:47

mrandros писал(а):Здравствуйте.

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

Большое спасибо.
Извините за беспокойство уже разобрался.

mrandros
Сообщения: 3
Зарегистрирован: 10 мар 2013, 10:29

Re: Урок 20. Анимация

Сообщение mrandros » 15 мар 2013, 06:49

ПОМОГИТЕ !!!!
Нужна информация о том, как можно воспроизвести свой mp3 или wav файл.
Извините, что вопрос не по теме.

Bazulia
Сообщения: 2
Зарегистрирован: 24 мар 2013, 22:53

Re: Урок 20. Анимация

Сообщение Bazulia » 25 мар 2013, 00:00

Тут возник такой вопрос, можно ли сделать анимацию фоновой(тоесть что бы анимация выполнялась паралельно с другими операциями, возможно в новом потоке)
И не могли бы вы показать пример?

evgenyukraine
Сообщения: 2
Зарегистрирован: 27 мар 2013, 13:24

Re: Урок 20. Анимация

Сообщение evgenyukraine » 27 мар 2013, 13:31

Подскажите пожалуйста как можно реализовать такую простую вещь как обработчик события нажатия на View который двигается. Например, мне нужно чтобы картинка - ImageView перемещалась по экрану, и при нажатии на нее она исчезала. Я уже мучаюсь три дня с этим, даже пробовал использовать NineOldAndroids библиотеку, работает только если я запускаю на устройстве с андроидом старше 14 API, а на телефоне c 9 API не работает, никак не реагирует на нажатие. Но ведь я видел кучу игр где такая простая функциональность реализована на андроиде младших версий.

Аватара пользователя
KamiSempai
Сообщения: 1339
Зарегистрирован: 17 фев 2012, 21:23
Откуда: Мордор

Re: Урок 20. Анимация

Сообщение KamiSempai » 27 мар 2013, 14:10

evgenyukraine писал(а):Подскажите пожалуйста как можно реализовать такую простую вещь как обработчик события нажатия на View который двигается. Например, мне нужно чтобы картинка - ImageView перемещалась по экрану, и при нажатии на нее она исчезала. Я уже мучаюсь три дня с этим, даже пробовал использовать NineOldAndroids библиотеку, работает только если я запускаю на устройстве с андроидом старше 14 API, а на телефоне c 9 API не работает, никак не реагирует на нажатие. Но ведь я видел кучу игр где такая простая функциональность реализована на андроиде младших версий.
Эта анимация предназначена для визуальных эффектов. Фатически, их позиция остается неизменной.
В играх применяется совершенно другой подход. Там используются не ImageView.
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.

Bazulia
Сообщения: 2
Зарегистрирован: 24 мар 2013, 22:53

Re: Урок 20. Анимация

Сообщение Bazulia » 27 мар 2013, 14:40

evgenyukraine писал(а):Подскажите пожалуйста как можно реализовать такую простую вещь как обработчик события нажатия на View который двигается. Например, мне нужно чтобы картинка - ImageView перемещалась по экрану, и при нажатии на нее она исчезала. Я уже мучаюсь три дня с этим, даже пробовал использовать NineOldAndroids библиотеку, работает только если я запускаю на устройстве с андроидом старше 14 API, а на телефоне c 9 API не работает, никак не реагирует на нажатие. Но ведь я видел кучу игр где такая простая функциональность реализована на андроиде младших версий.
Можно в XML повесить на неё метод android:onClick="metod_name", и в самом методе img.setVisibility(ImageView.INVISIBLE);

evgenyukraine
Сообщения: 2
Зарегистрирован: 27 мар 2013, 13:24

Re: Урок 20. Анимация

Сообщение evgenyukraine » 27 мар 2013, 14:53

KamiSempai писал(а):
evgenyukraine писал(а):Подскажите пожалуйста как можно реализовать такую простую вещь как обработчик события нажатия на View который двигается. Например, мне нужно чтобы картинка - ImageView перемещалась по экрану, и при нажатии на нее она исчезала. Я уже мучаюсь три дня с этим, даже пробовал использовать NineOldAndroids библиотеку, работает только если я запускаю на устройстве с андроидом старше 14 API, а на телефоне c 9 API не работает, никак не реагирует на нажатие. Но ведь я видел кучу игр где такая простая функциональность реализована на андроиде младших версий.
Эта анимация предназначена для визуальных эффектов. Фатически, их позиция остается неизменной.
В играх применяется совершенно другой подход. Там используются не ImageView.
Не соглашусь с вами, на 4 андроиде все прекрасно работает, и я использую это в игре. У меня в методе создается анимация для ImageView и при нажатии ImageView исчезает. Как такую простую функциональность сделать на андроид 2.2?
Вот мой код который замечательно работает:

private void GoFly(final ImageView bubble)
{
if(!bubbles.contains(bubble))
return;

bubble.setOnClickListener(new OnClickListener() {

@Override
public void onClick(View v) {
// TODO Auto-generated method stub

bubbles.remove(v);
MainLayoutFrame.removeView(v);
v = null;
MainLayoutFrame.invalidate();
app.playSound(app.sound_wand);
}
});


int lastX = bubblesLastPoints.get(bubble).x;
int lastY = bubblesLastPoints.get(bubble).y;

int newPosX = MyGetRandom(lastX-Radius < 0 ? 0 : lastX-Radius, lastX + Radius > displayWidth-130 ? displayWidth-130 : lastX + Radius);
int newPosY = MyGetRandom(lastY-Radius < 0 ? 0 : lastY-Radius, lastY + Radius > displayHeight-130 ? displayHeight-130 : lastY + Radius);

bubblesLastPoints.get(bubble).x = newPosX;
bubblesLastPoints.get(bubble).y = newPosY;

AnimatorSet set = new AnimatorSet();
set.playTogether(
ObjectAnimator.ofFloat(bubble, "rotation", 0, -360),
ObjectAnimator.ofFloat(bubble, "translationX", lastX, newPosX),
ObjectAnimator.ofFloat(bubble, "translationY", lastY, newPosY)
);


set.addListener(new AnimatorListener() {

@Override
public void onAnimationStart(Animator animation) {


}

@Override
public void onAnimationRepeat(Animator animation) {

}

@Override
public void onAnimationEnd(Animator animation) {
GoFly(bubble);
}

@Override
public void onAnimationCancel(Animator animation) {
// TODO Auto-generated method stub

}


});


set.setDuration(3 * 1000).start();


}

Ответить