2016-11-14 3 views
1

Ich suchte im ganzen Internet aber fand keine Antwort, wie man erreicht, was ich will.Erstelle android Knopf mit Anzapfung Glühenanimation

Ich möchte GlowButton erstellen (ich meine, dass es Button erweitert wird) Klasse, die Schaltfläche mit äußeren Schein ist, wenn auf gedrückt oder fokussierten Zustand. Siehe das Bild unten zu verstehen, was ich meine:

enter image description here

Dieser Schein nach außen erscheinen soll und disapper mit Animation (nur Opazität ändern).

  1. Einfache Frage. Wie kann ich diesen Knopf ohne Animation tun? Ich weiß, dass ich so etwas wie dies schaffen kann:

    <item android:state_pressed="true"> 
        <shape> 
         <solid android:color="@color/gray"/> 
         <stroke 
          android:width="4dp" 
          android:color="@color/orange" /> 
         <corners 
          android:radius="8dp" /> 
         <padding android:bottom="1dp" 
           android:top="1dp" 
           android:left="1dp" 
           android:right="1dp"/> 
        </shape> 
    </item> 
    ... 
    

    Aber es ist eine solide Glanz. Ich brauche gradient glow wie auf dem Bild oben.

  2. Harte Frage. Wie kann ich diesen Knopf mit Erscheinen und verschwinden Animation tun? Benutzer Touch-Taste - leuchtet von 0% Opazität bis 100% Opazität innerhalb von 300 ms. Das Leuchten sollte in ähnlicher Weise verschwinden, wenn der Benutzer den Knopf nicht mehr berührt.

Vielen Dank im Voraus!

Antwort

1

Sie können die Alpha-Animation durch Klicken auf die Schaltfläche festlegen. Sie müssen Glühen als Hintergrund zum Knopf setzen und wenn Sie betätigen, den Knopf, der Hintergrund des Knopfes wird wie Alpha Animation mit Wiederholungszählung 1 so animieren, dass es aussieht, als ob Schatten erscheint und verschwinden. Set Animationszeit 300ms

alpha_animation.xml in anim Ordner

<?xml version="1.0" encoding="UTF-8"?> 
<set xmlns:android="http://schemas.android.com/apk/res/android"> 

    <alpha 
     android:duration="1000" 
     android:fromAlpha="0.0" 
     android:interpolator="@android:anim/accelerate_interpolator" 
     android:toAlpha="1.0" /> 

</set> 

Layout-Datei ist wie unten

<?xml version="1.0" encoding="utf-8"?> 
<RelativeLayout 
    xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"> 

    <Button 
     android:id="@+id/btnGlowBg" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_centerInParent="true" 
     android:background="@drawable/drawable_glow" 
     android:padding="20dp" 
    /> 
    <Button 
     android:id="@+id/btnPinButton" 
     android:layout_width="100dp" 
     android:layout_height="100dp" 
     android:layout_centerInParent="true" 
     android:padding="20dp" 
     android:text="10"/> 

</RelativeLayout> 

Aktivität Code

public class TestActivity extends AppCompatActivity { 
    Button btnGlowBg; 

    @Override 
    protected void onCreate(@Nullable Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.layout_test); 

     btnGlowBg = (Button) findViewById(R.id.btnGlowBg); 
     btnGlowBg.setVisibility(View.GONE); 
     findViewById(R.id.btnPinButton).setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) {     
       btnGlowBg.setVisibility(View.VISIBLE); 
       final Animation startAnimation = AnimationUtils.loadAnimation(getApplicationContext(), R.anim.alpha_animation); 
       btnGlowBg.startAnimation(startAnimation); 


      } 
     }); 
    } 
}