почему мое приложение вылетает, когда я хочу создать фон для анимации в Android Studio?

#android

#Android

Вопрос:

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

activity_main.xml:

 <?xml version="1.0" encoding="utf-8"?>
<androidx.coordinatorlayout.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:id="@ id/linear_layout"
    android:background="@drawable/gradient_list"
    tools:context=".MainActivity">
</androidx.coordinatorlayout.widget.CoordinatorLayout>
  

mainActivity.java:

 package com.example.myapplication;

import android.annotation.SuppressLint;
import android.content.Context;
import android.graphics.Point;
import android.graphics.drawable.AnimationDrawable;
import android.os.Bundle;
import android.os.Handler;
import android.text.format.Time;
import android.view.Display;
import android.view.MotionEvent;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import android.view.WindowManager;
import android.view.animation.Animation;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.LinearLayout;

import androidx.appcompat.app.AppCompatActivity;
import androidx.constraintlayout.widget.ConstraintLayout;

import java.util.Timer;
import java.util.TimerTask;

public class MainActivity extends AppCompatActivity {
@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear_layout);

        AnimationDrawable animationDrawable = (AnimationDrawable) linearLayout.getBackground();

        animationDrawable.setEnterFadeDuration(2500);
        animationDrawable.setExitFadeDuration(5000);

        animationDrawable.start();
}
}
  

все мои файлы градиентов:

 <?xml version="1.0" encoding="utf-8"?>

<animation-list xmlns:android="http://schemas.android.com/apk/res/android">
    <item android:drawable="@drawable/play"
        android:duration="4000"/>
    <item android:drawable="@drawable/play1"
        android:duration="4000"/>
    <item android:drawable="@drawable/play2"
        android:duration="4000"/>
</animation-list>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#66ff66"
        android:endColor="#ff99cc"
        android:angle="225" />
</shape>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#003366"
        android:endColor="#66ffcc"
        android:angle="135" />
</shape>

<?xml version="1.0" encoding="utf-8"?>
<shape xmlns:android="http://schemas.android.com/apk/res/android"
    android:shape="rectangle">
    <gradient
        android:startColor="#ffcc00"
        android:endColor="#ff99cc"
        android:angle="45" />
</shape>
  

спасибо!! заранее.

Комментарии:

1. пожалуйста, добавьте трассировку стека из logcat для лучшего понимания сбоя

Ответ №1:

Вы должны изменить эту строку

 LinearLayout linearLayout = (LinearLayout) findViewById(R.id.linear_layout);
  

Для

 CoordinatorLayout linearLayout = (CoordinatorLayout) findViewById(R.id.linear_layout);
  

ваш макет был неправильным.

Комментарии:

1. что означает CoordinatorLayout? извините, что спрашиваю, но я новичок в Android studio. и когда я запускаю код, ничего не происходит.

2. Это ваш родительский макет в XML-файле. Это один из видов макета, такой как LinearLayout, RelativeLayout.

3. хорошо, спасибо!! но цвет меняется не только …. любая помощь?