Klick-Effekt auf die Schaltfläche in Android

In Android, während ich Hintergrundbild auf Button setze Ich kann keinen Effekt auf Knopf sehen. Ich benötige etwas Effekt auf Knopf, also kann Benutzer erkennen, dass Knopf angeklickt wird. Button sollte dunkel sein, während ein paar Sekunden, wenn es geklickt hat, also was soll ich dafür machen?

  • Wie kann ich Textbilder mit gemeinsamen Elementübergängen skalieren?
  • Fehler beim Herstellen der Verbindung zum Kamera-Service
  • Importieren von org.apache.commons in Android-Anwendungen
  • Verhindern, dass ViewPager die Off-Screen-Ansichten zerstört
  • Wie kann ich HorizontalScrollView wie Galerie implementieren?
  • AdView verlangsamt ganze App, möglicher Grund
  • Android - referenziertes String-Array mit einem anderen String mit getIdentifier () und getStringArray
  • Entpacken Sie schnell Bitmaps aus dem Speicher
  • Microsoft OData Client Xamarin funktioniert nicht
  • Verwenden von Gradle, um externe Bibliotheken in getrennten Dex-Dateien zu teilen, um Android Dalvik 64k Methoden zu beheben
  • Lesen Sie alle Telefonnummern des Kontakts in android
  • Coding für Google Project Glass, lernt Google Android für Handy den Weg zu gehen?
  • 8 Solutions collect form web for “Klick-Effekt auf die Schaltfläche in Android”

    Dies kann durch die Erstellung einer zeichnbaren XML-Datei mit einer Liste von Zuständen für die Schaltfläche erreicht werden. So zum Beispiel, wenn Sie eine neue XML-Datei namens "button.xml" mit dem folgenden Code erstellen:

    <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_focused="true" android:state_pressed="false" android:drawable="@drawable/YOURIMAGE" /> <item android:state_focused="true" android:state_pressed="true" android:drawable="@drawable/gradient" /> <item android:state_focused="false" android:state_pressed="true" android:drawable="@drawable/gradient" /> <item android:drawable="@drawable/YOURIMAGE" /> </selector> 

    Um das Hintergrundbild mit einem verdunkelten Aussehen auf der Presse zu halten, erstellen Sie eine zweite XML-Datei und rufen Sie es gradient.xml mit dem folgenden Code:

     <?xml version="1.0" encoding="utf-8"?> <layer-list xmlns:android="http://schemas.android.com/apk/res/android" > <item> <bitmap android:src="@drawable/YOURIMAGE"/> </item> <item> <shape xmlns:android="http://schemas.android.com/apk/res/android"> <gradient android:angle="90" android:startColor="#880f0f10" android:centerColor="#880d0d0f" android:endColor="#885d5d5e"/> </shape> </item> </layer-list> 

    In der xml deines Buttons setze den Hintergrund auf die Schaltfläche xml zB

     android:background="@drawable/button" 

    Hoffe das hilft!

    Bearbeiten: Ändern Sie den obigen Code, um ein Bild (YOURIMAGE) in der Schaltfläche zu zeigen, im Gegensatz zu einer Blockfarbe.

    Es ist einfacher, wenn man viele Bildtasten hat und du keine xml-s für jeden Button schreiben willst.

     public static void buttonEffect(View button){ button.setOnTouchListener(new OnTouchListener() { public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { v.getBackground().setColorFilter(0xe0f47521,PorterDuff.Mode.SRC_ATOP); v.invalidate(); break; } case MotionEvent.ACTION_UP: { v.getBackground().clearColorFilter(); v.invalidate(); break; } } return false; } }); } 

    Erstellen Sie Ihr AlphaAnimation Objekt, das entscheidet, wie viel wird der Fading-Effekt der Schaltfläche sein, dann lassen Sie es in der onClickListener Ihrer Schaltflächen starten

    Beispielsweise :

     private AlphaAnimation buttonClick = new AlphaAnimation(1F, 0.8F); // some code public void onClick(View v) { v.startAnimation(buttonClick); } 

    Natürlich ist das nur ein Weg, nicht das am meisten bevorzugte, es ist einfacher

    Um Ihr Element im Einklang mit dem System aussehen und fühlen ist nicht hart durch die Verweisung auf das Systemattribut android: attr / selectableItemBackground. Zum Beispiel, wenn du ein ImageView in deinem Widget machen möchtest, wähle "wählbar" mit der richtigen Hervorhebung usw. aus

     <ImageView ... android:background="?android:attr/selectableItemBackground" ... /> 

    Es gibt viel in android_sdk_path / platforms / android-x. Glückliches Graben!

    EDIT: Ich habe später herausgefunden, dass dieses einfache Attribut nicht in SDK <v11 lebt. Also der beste Weg, den ich jetzt kenne, ist, das Appwidget-Template-Paket herunterzuladen und es zu benutzen.

    https://stackoverflow.com/a/11513474/4683601

    Oder mit nur einem Hintergrundbild kannst du den Klick-Effekt über setOnTouchListener

    Zwei Wege

     ((Button)findViewById(R.id.testBth)).setOnTouchListener(new OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { switch (event.getAction()) { case MotionEvent.ACTION_DOWN: { Button view = (Button) v; view.getBackground().setColorFilter(0x77000000, PorterDuff.Mode.SRC_ATOP); v.invalidate(); break; } case MotionEvent.ACTION_UP: // Your action here on button click case MotionEvent.ACTION_CANCEL: { Button view = (Button) v; view.getBackground().clearColorFilter(); view.invalidate(); break; } } return true; } }); 

    Bildbeschreibung hier eingeben

    Und wenn du nicht setOnTouchLister verwenden setOnTouchLister , ist die andere Möglichkeit, dies zu erreichen

      myButton.getBackground().setColorFilter(.setColorFilter(0xF00, Mode.MULTIPLY); StateListDrawable listDrawable = new StateListDrawable(); listDrawable.addState(new int[] {android.R.attr.state_pressed}, drawablePressed); listDrawable.addState(new int[] {android.R.attr.defaultValue}, myButton); myButton.setBackgroundDrawable(listDrawable); 

    Ich möchte nur noch eine einfache Möglichkeit machen, dies zu tun: Wenn dein ImageButton seinen Hintergrund bleibt und du es nicht auf null setzt, wird es wie ein normaler Button funktionieren und die Klick-Animation zeigen, während du genau wie andere Buttons klickst Der Hintergrund, während es noch da ist:

     <ImageButton android:id="@+id/imageButton2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:paddingBottom="1dp" android:paddingLeft="1dp" android:paddingRight="1dp" android:paddingTop="1dp" android:src="@drawable/squareicon" /> 

    Die Polsterungen lassen den Hintergrund nicht sichtbar werden und machen den Knopf wie andere Tasten.

     Step: set a button in XML with onClick Action: <Button android:id="@+id/btnEditUserInfo" style="?android:borderlessButtonStyle" android:layout_width="wrap_content" android:layout_height="@dimen/txt_height" android:layout_gravity="center" android:background="@drawable/round_btn" android:contentDescription="@string/image_view" android:onClick="edit_user_info" android:text="Edit" android:textColor="#000" android:textSize="@dimen/login_textSize" /> Step: on button clicked show animation point //pgrm mark ---- ---- ----- ---- ---- ----- ---- ---- ----- ---- ---- ----- public void edit_user_info(View view) { // show click effect on button pressed final AlphaAnimation buttonClick = new AlphaAnimation(1F, 0.8F); view.startAnimation(buttonClick); Intent intent = new Intent(getApplicationContext(), EditUserInfo.class); startActivity(intent); }// end edit_user_info 

    Dies ist die beste Lösung, mit der ich mich von der Antwort von @ Vinayak bekomme. Alle anderen Lösungen haben unterschiedliche Nachteile.

    Zuerst eine solche Funktion schaffen.

     void addClickEffect(View view) { Drawable drawableNormal = view.getBackground(); Drawable drawablePressed = view.getBackground().getConstantState().newDrawable(); drawablePressed.mutate(); drawablePressed.setColorFilter(Color.argb(50, 0, 0, 0), PorterDuff.Mode.SRC_ATOP); StateListDrawable listDrawable = new StateListDrawable(); listDrawable.addState(new int[] {android.R.attr.state_pressed}, drawablePressed); listDrawable.addState(new int[] {}, drawableNormal); view.setBackground(listDrawable); } 

    Erläuterung:

    GetConstantState (). NewDrawable () wird verwendet, um das vorhandene Drawable zu klonen, ansonsten wird das gleiche zeichen verwendet. Lesen Sie mehr von hier: Android: Klonen eines Drawable, um ein StateListDrawable mit Filtern zu machen

    Mutate () wird verwendet, um den Drawable-Klon nicht mit seinen anderen Instanzen von Drawable zu teilen. Lesen Sie hier mehr darüber: https://developer.android.com/reference/android/graphics/drawable/Drawable.html#mutate ()

    Verwendung:

    Sie können jede Art von Ansicht (Button, ImageButton, View etc) als Parameter an die Funktion übergeben und sie erhalten den Klick-Effekt auf sie angewendet.

     addClickEffect(myButton); addClickEffect(myImageButton); 
    Das Android ist ein Google Android Fan-Website, Alles ├╝ber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.