In dem Versuch, meinen Code für die Benutzeroberfläche für das Spiel, das ich entwickle, zu straffen, fand ich es sehr lohnenswert, ein RelativeLayout durch onClick() eines ImageButtons zu übergeben.Kann ein RelativeLayout onClick?
Ich frage mich, ob dies möglich ist, weil es scheint, dass die Kraft immer geschlossen wird, wenn der ImageButton angeklickt wird? Ist das ein Problem mit meinem Code im Allgemeinen, oder ist der tatsächliche Mechanismus, das RelativeLayout zu durchlaufen, unmöglich?
Dank fortschrittlicher ist Hier mein Code:
public class SecondaryMenu extends Activity {
ImageButton scrambledbutton; //Button That checks click and performs animation for the scrambled carton.
ImageButton breakfastburritobutton; //Button for animation for breakfast burrito carton.
ImageButton eggsbenedictbutton; //Button for eggs benedict carton animation.
ImageButton eggsontoastbutton; //Button for eggs on toast animation
ImageButton eggsaladsandwichbutton; //Button for egg salad sandwich animation.
ImageButton eastereggsbutton; //Button for easter eggs animation.
ImageButton ostricheggsbutton; //Button for ostrich eggs animation.
ImageButton quaileggsbutton; //Button for quail eggs animation.
RelativeLayout animatedcarton; //RelativeLayout for animating
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.secondary_menu); //Sets the current layout to the Secondary_Menu layout
//Does animation based on button press - SCRAMBLED
scrambledbutton = (ImageButton) findViewById(R.id.scrambledbutton);
scrambledbutton.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Calls the animation for the carton, and passes it the view to animate.
cartonanimation(findViewById (R.id.scrambledcarton));
}
});
//Does animation based on button press - BREAKFAST BURRITO
breakfastburritobutton = (ImageButton) findViewById (R.id.breakfastburritobutton);
breakfastburritobutton.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
//Calls animation and passes view to be animated.
cartonanimation(findViewById (R.id.breakfastburittocarton));
}
});
}
//Animation that slides clicked carton off the screen
private void cartonanimation(View tempview) {
animatedcarton = (RelativeLayout) tempview;
animatedcarton.setVisibility(RelativeLayout.VISIBLE);
animatedcarton.setBackgroundResource(R.anim.secondarymenuanimation);
AnimationDrawable viewAnimation = (AnimationDrawable) animatedcarton.getBackground();
viewAnimation.start();
viewAnimation.setOneShot(true);
}
}
Und mein xml:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="320dp"
android:layout_height="wrap_content"
android:gravity="top">
<!-- Carton number 1 - Scrambled -->
<RelativeLayout
android:orientation="vertical"
android:layout_width="320dp"
android:layout_height="160dp"
android:gravity="top"
android:id="@+id/scrambledcarton">
<ImageButton
android:id="@+id/scrambledbutton"
android:background="@drawable/cartonbackground"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginBottom="20dp">
</ImageButton>
<TextView
style="@style/cartondishstyle"
android:text="@string/carton1"><!-- Change for each Carton -->
</TextView>
<TextView
style="@style/cartoneggcountstyle"
android:text="18"
android:layout_marginRight="40dp"><!-- Adjust for each Carton -->
</TextView>
</RelativeLayout>
<!-- Carton number 2 - Breakfast Burrito -->
<RelativeLayout
android:orientation="vertical"
android:layout_width="320dp"
android:layout_height="160dp"
android:gravity="top"
android:id="@+id/breakfastburittocarton">
<ImageButton
android:id="@+id/breakfastburritobutton"
android:background="@drawable/cartonbackground"
android:layout_centerVertical="true"
android:layout_centerHorizontal="true"
android:layout_width="match_parent"
android:layout_height="match_parent" android:layout_marginLeft="10dp" android:layout_marginRight="10dp" android:layout_marginBottom="20dp">
</ImageButton>
<TextView
style="@style/cartondishstyle"
android:text="@string/carton2"><!-- Change for each Carton -->
</TextView>
<TextView
style="@style/cartoneggcountstyle"
android:text="18"
android:layout_marginRight="40dp"><!-- Adjust for each Carton -->
</TextView>
</RelativeLayout>
</LinearLayout>
und die Log-Katze
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): FATAL EXCEPTION: main
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): android.content.res.Resources$NotFoundException: File res/anim/secondarymenuanimation.xml from drawable resource ID #0x7f040000
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.content.res.Resources.loadDrawable(Resources.java:1697)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.content.res.Resources.getDrawable(Resources.java:581)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.view.View.setBackgroundResource(View.java:7533)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at com.example.eggRoll.SecondaryMenu.cartonanimation(SecondaryMenu.java:54)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at com.example.eggRoll.SecondaryMenu.access$0(SecondaryMenu.java:51)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at com.example.eggRoll.SecondaryMenu$1.onClick(SecondaryMenu.java:35)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.view.View.performClick(View.java:2485)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.view.View$PerformClick.run(View.java:9080)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.os.Handler.handleCallback(Handler.java:587)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.os.Handler.dispatchMessage(Handler.java:92)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.os.Looper.loop(Looper.java:123)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.app.ActivityThread.main(ActivityThread.java:3683)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at java.lang.reflect.Method.invokeNative(Native Method)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at java.lang.reflect.Method.invoke(Method.java:507)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:839)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:597)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at dalvik.system.NativeStart.main(Native Method)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #2: invalid drawable tag set
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:783)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.graphics.drawable.Drawable.createFromXml(Drawable.java:728)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): at android.content.res.Resources.loadDrawable(Resources.java:1694)
04-02 00:27:24.725: ERROR/AndroidRuntime(1674): ... 16 more
Fügen Sie einen beliebigen Logcat-Ausgang hinzu, der Ihren ursprünglichen Beitrag möglicherweise näher beschreibt. Um jedoch Ihre Frage zu beantworten, ob Sie in der Lage sind, ein RelativeLayout über onClick zu übergeben - ja, können Sie so gut wie jede * Ansicht, die sich von Ansicht erstreckt, übergeben. :-) – ninetwozero
hinzugefügt, hoffe, es hilft – Rogue
Veröffentlichen Sie die Secondarymenuanimation Datei –