Я новичок в программировании для Android, и я недавно искал простую анимацию затухания для объекта. Я поместил его в свой код, протестировал его, и это было изменчиво. Я проверил бревна и увидел это:I/Хореограф (12759): Пропущено 40 кадров! Приложение может делать слишком много работы над своей основной нитью
11-05 19: 19: 21.319: I/Хореограф (12759): Пропущено 40 кадров! Приложение может делать слишком много работы над своей основной нитью.
Вот мой код в MainActivity классе
private MainActivity actMain;
FadeIn fadeClass = new FadeIn();
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
findViewById(R.id.view_switcher);
actMain = this;
new Thread() {
@Override
public void run() {
// If there are stories, add them to the table
try {
// code runs in a thread
runOnUiThread(new Runnable() {
@Override
public void run() {
fadeClass.animation(actMain);
}
});
} catch (final Exception ex) {
Log.i("---", "Exception in thread");
}
}
}.start();
}
А из класса FadeIn:
private View view;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
public void animation(Activity context) {
final View view = context.findViewById(R.id.fadeOutLayer);
Animation fadeOut = new AlphaAnimation(1f, 0f);
fadeOut.setDuration(3000);
fadeOut.setAnimationListener(new AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationEnd(Animation animation) {
view.setVisibility(View.GONE);
}
});
view.startAnimation(fadeOut);
}
Спасибо!
Извините за глупый вопрос, но что мне делать, чтобы запустить onActivityCreated? это не работает: \t public void onActivityCreated() { \t \t fadeClass.animation (actMain); \t} –
Есть некоторые вещи, которые я не понимаю в вашем коде. Почему у вас есть метод onCreate в вашем классе FadeIn? И почему это раздувает представление контента? Вы хотите применить анимацию в представлении, включенном в ваш R.layout.activity_main, правильно? Вы можете поместить свой метод анимации в MainActivity и передать представление (или ссылку на представление) в качестве параметра. В onCreate сохраните ссылку на представление для анимации (findviewbyId) и используйте эту ссылку с помощью анимации метода. Из-за onActivityCreated я ошибался (используется во Фрагментах) извините. Используйте его в onResume или onCreate. – Nescafemix