单击按钮时出现AnimationDrawable错误 [英] AnimationDrawable Error on button click

查看:95
本文介绍了单击按钮时出现AnimationDrawable错误的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我相信我的xml是正确的,但是我不确定是什么导致了我的代码中的此错误.我试图在imagebutton上尝试animationdrawable,但是每次单击按钮时都会出现错误.

I believe my xml is correct, but I'm not sure what's causing this error in my code. I am trying to attempt animationdrawable on an imagebutton, but each time I click my button I get an error.

这是我的动画列表"music_icon":

Here is my animation-list "music_icon":

    <animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/selected" android:oneshot="true">
        <item android:drawable="@drawable/musicon1" android:duration="50" />
        <item android:drawable="@drawable/musicon2" android:duration="50" />
        <item android:drawable="@drawable/musicon3" android:duration="50" />
        <item android:drawable="@drawable/musicon4" android:duration="50" />
        <item android:drawable="@drawable/musicon5" android:duration="50" />
    </animation-list>

我的mainActivity.java:

My mainActivity.java:

import android.os.Bundle;
import android.os.Handler;
import android.support.v7.app.AppCompatActivity;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageButton;
import android.graphics.drawable.AnimationDrawable;


public class HomeScreen extends AppCompatActivity {

ImageButton musicEnable_ImageButton;
Handler musicIcon_animate = new Handler();
int ArrayPos = 0;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_home_screen);

    musicEnable_ImageButton = (ImageButton) findViewById(R.id.soundEnable_button);
    musicEnable_ImageButton.setBackgroundResource(R.drawable.musicoff);
    musicEnable_ImageButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            musicEnable_ImageButton.setBackgroundResource(R.drawable.music_icon);
            final AnimationDrawable frameAnimation = (AnimationDrawable) musicEnable_ImageButton.getBackground();
            frameAnimation.start();
        }
    });
}

我的layout.xml:

my layout.xml:

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent"
    android:layout_height="wrap_content" android:paddingLeft="@dimen/activity_horizontal_margin"
    android:paddingRight="@dimen/activity_horizontal_margin"
    android:paddingTop="@dimen/activity_vertical_margin"
    android:paddingBottom="@dimen/activity_vertical_margin" tools:context=".HomeScreen"
    android:background="@android:drawable/screen_background_dark_transparent"
    android:clickable="true"
    android:id="@+id/homescreen_view">

    <Button
        android:layout_width="100.0dp"
        android:layout_height="25.0dp"
        android:text="Help"
        android:id="@+id/instructionsButton"
        android:layout_alignParentTop="false"
        android:layout_alignParentStart="true"
        android:textColor="#05ffda"
        android:background="@android:color/holo_purple"
        android:longClickable="true" />

    <ImageButton
        android:layout_width="50dp"
        android:layout_height="50dp"
        android:scaleType="centerCrop"
        android:id="@+id/soundEnable_button"
        android:layout_alignParentTop="true"
        android:layout_alignParentEnd="true"
        android:longClickable="true"
        android:nestedScrollingEnabled="true"/>

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="100dp"
        android:layout_height="25dp"
        android:text="Highscores"
        android:id="@+id/highscores_button"
        android:layout_alignParentTop="true"
        android:layout_centerHorizontal="true"
        android:background="@android:color/holo_purple"
        android:textColor="#05ffda" />

    <Button
        style="?android:attr/buttonStyleSmall"
        android:layout_width="100dp"
        android:layout_height="30dp"
        android:text="Play Game"
        android:id="@+id/startGame_button"
        android:background="@android:color/holo_purple"
        android:textColor="#05ffda"
        android:layout_marginTop="175dp"
        android:singleLine="true"
        android:layout_alignParentTop="false"
        android:layout_centerHorizontal="true" />

</RelativeLayout>

下面是错误消息:

06-07 05:00:48.004 19844-19844/com.example.comp.app_name E/AndroidRuntime: FATAL EXCEPTION: main
java.lang.ClassCastException: android.graphics.drawable.StateListDrawable cannot be cast to android.graphics.drawable.AnimationDrawable
at com.example.comp.app_name.HomeScreen$1.onClick(HomeScreen.java:36)
at android.view.View.performClick(View.java:4240)
at android.view.View$PerformClick.run(View.java:17721)
at android.os.Handler.handleCallback(Handler.java:730)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:5103)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:525)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
at dalvik.system.NativeStart.main(Native Method)

推荐答案

两件事:

  1. 更改您的可绘制对象(删除selector标签):
  1. Change your drawable (remove selector tag):

<animation-list xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/selected" android:oneshot="true">
    <item android:drawable="@drawable/musicon1" android:duration="50" />
    <item android:drawable="@drawable/musicon2" android:duration="50" />
    <item android:drawable="@drawable/musicon3" android:duration="50" />
    <item android:drawable="@drawable/musicon4" android:duration="50" />
    <item android:drawable="@drawable/musicon5" android:duration="50" />
</animation-list>

  1. 我看不到您在设置musicEnable_ImageButton的背景,您只是在尝试get ...我错过了什么,还是只是忘了先设置背景?
  1. I can't see you setting the background of the musicEnable_ImageButton, you're only trying to get it... Am I missing something, or are you just forgetting to set the background in the first place?

这篇关于单击按钮时出现AnimationDrawable错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆