2016-07-02 7 views
0

ich zur Zeit ein einfaches Memory-Spiels für Android-Codierung und liefen in dieses Problem:Korrekt Tasten, die Höhe hat/Schlagschatten gesetzt

Ich wollte meine Karte animieren (die eine Bild-Taste ist) ausflippen . Das funktioniert. Was jedoch nicht funktioniert, ist der der Schaltfläche über die Elevation-Eigenschaft zugewiesene Schlagschatten. Es wird nicht wie erwartet angezeigt und führt zu Grafikfehlern und kleinen Leistungsproblemen.

können Sie haben einen Blick auf die Pannen hier: graphical glitches on the drop shadow

Die Schaltflächen in meiner activity_memory.xml Datei wie folgt definiert sind:

<!-- ... --> 
<ImageButton 
    android:layout_width="70dp" 
    android:layout_height="70dp" 
    android:id="@+id/btn_1_1" 
    android:layout_column="0" 
    android:background="@drawable/zelda0" 
    android:layout_margin="2dp" 
    android:gravity="center" 
    android:onClick="button11clicked" 
    android:elevation="5dp" /> 
<!-- ... --> 

die Animation in meinem ziehbar angegeben ist/Animator flipcardtoback.xml-Datei wie folgt:

<set xmlns:android="http://schemas.android.com/apk/res/android"> 
<!-- Rotate. --> 
<objectAnimator 
    android:valueFrom="0" 
    android:valueTo="180" 
    android:propertyName="rotationY" 
    android:interpolator="@android:interpolator/accelerate_decelerate" 
    android:duration="1000" /> 
</set> 

Der Code löst eine Animationsfunktion aus, die die Karte umdreht und nach der Hälfte der Animationsdauer das Hintergrundbild der Schaltfläche vom vorderen Bild zum hinteren Bild der Karte wechselt.

Ich denke, die Art, wie ich die Karte umblättere, ist nicht das Problem. Es ist nur der Schlagschatten, der stört. Ich weiß nicht wirklich, wie ich das beheben kann, da ich versucht habe, eine neue aufzeichnungsfähige Ressource zu einem Schlagschatten zu machen und dies der Hintergrundeigenschaft der Schaltfläche zuzuweisen. Dies führt jedoch dazu, dass das Bild offensichtlich nicht angezeigt wird.

Gibt es eine Möglichkeit, dies zu beheben, so dass es den Schlagschatten korrekt oder auf eine Weise anspricht, die für das Auge angenehmer ist?

Antwort

0

Scale eine Taste und eine Skala auf der Rückseite. Auf diese Weise bleibt die Schaltfläche flach und Android hat keine Probleme, einen Schatten anzuzeigen.

public static final AccelerateInterpolator 
    ACCELERATE_INTERPOLATOR = new AccelerateInterpolator(); 
public static final DecelerateInterpolator 
    DECELERATE_INTERPOLATOR = new DecelerateInterpolator(); 

...

private void animateFromTo(final Button buttonLeave, final Button buttonArrive) { 
    buttonArrive.setVisibility(View.INVISIBLE); 
    buttonLeave.animate() 
      .setDuration(250) 
      .scaleY(0) 
      .setInterpolator(ACCELERATE_INTERPOLATOR) 
      .setListener(new AnimatorListenerAdapter() { 
       public void onAnimationEnd(Animator animation) { 
        buttonLeave.setVisibility(View.INVISIBLE); 
        buttonArrive.setScaleY(0); 
        buttonArrive.setVisibility(View.VISIBLE); 
        buttonArrive.animate() 
          .setDuration(250) 
          .scaleY(1) 
          .setInterpolator(DECELERATE_INTERPOLATOR) 
          .setListener(null) 
          .start(); 
       } 
      }).start(); 
} 
+0

hoffe, das hilft, dachte sogar, es ein wenig spät ist! Eine bessere Antwort gesehen? –