#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. хорошо, спасибо!! но цвет меняется не только …. любая помощь?