单击按钮时出现AnimationDrawable错误 [英] AnimationDrawable Error on button click
本文介绍了单击按钮时出现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)
推荐答案
两件事:
- 更改您的可绘制对象(删除
selector
标签):
- 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>
- 我看不到您在设置
musicEnable_ImageButton
的背景,您只是在尝试get
...我错过了什么,还是只是忘了先设置背景?
- I can't see you setting the background of the
musicEnable_ImageButton
, you're only trying toget
it... Am I missing something, or are you just forgetting to set the background in the first place?
这篇关于单击按钮时出现AnimationDrawable错误的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文