Ändern Sie das Quellbild für die Bildansicht, wenn Sie gedrückt werden

Ich habe eine Scroll-Ansicht mit vielen Bildtasten. Ich möchte das Bild für eine Bildtaste ändern, wenn es gedrückt wird. Die Sache ist, dass ich das Bild bleiben soll, bis eine andere Bildtaste gedrückt wird. Deshalb konnte ich keinen Selektor verwenden. Was ist die beste Praxis, um seine zu erreichen?

Freundliche Grüße

  • Warum bekomme ich NullPointerException beim Senden einer SMS auf ein HTC Desire oder was ist SubmitPdu?
  • Überprüfen Sie, ob Android WebView Berührungsereignisse verbraucht
  • NameNotFoundException bei ActivityUnitTestCase mit ActionBarActivity
  • Wie lade ich meine App von Eclipse auf mein Android-Handy statt AVD
  • Android game loop vs Aktualisierung im Rendering Thread
  • Google Play Service Location API gibt manchmal falsche Position zurück
  • Android Pushing Updates auf Play Store
  • Gutes Beispiel für OpenGLES Shader in Android?
  • Wie komprimiere ich JSON mit gzip in Rails für Android?
  • Android Memory Management Granularität - Aktivität oder Prozess?
  • Scala + Android: Ist jemand erfolgreich in Eclipse gebaut und debuggen?
  • Android-Browser-Skalierung?
  • 14 Solutions collect form web for “Ändern Sie das Quellbild für die Bildansicht, wenn Sie gedrückt werden”

    Du willst das machen.

    ImageButton Demo_button = (ImageButton)findViewById(R.id.firstimage); // when you click this demo button Demo_button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Demo_button.setImageResource(R.drawable.secondimage); } } 

    Versuche dies. (Aktualisiertes Setset zur Einstellung)

    Bessere Lösung, benutze folgendes xml als Quelle des Bildes:

      <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android" > <item android:state_activated="true"> <bitmap android:src="@drawable/image_selected"/> </item> <item> <bitmap android:src="@drawable/image_not_selected"/> </item> </selector> @Override public void onClick(View v) { v.setActivated(!v.isActivated()); } 

    Vergessen Sie nicht, das Feld "Spaß" zu schaffen

    Versuchen Sie dies, um das Bild zu ändern. Wenn die Bildansicht gedrückt wird

     Like_btn.setOnClickListener(new OnClickListener() { **private boolean fun = true;** public void onClick(View v) { if(fun) { Like_btn.setImageResource(R.drawable.unlike); fun=false; } else { fun=true; Like_btn.setImageResource(R.drawable.like); Toast.makeText(getApplicationContext(), "Changed", Toast.LENGTH_LONG).show(); } } }); 

    Versuchen Sie unten Code: –

     boolean flag=false; ImageButton btn = (ImageButton)findViewById(R.id.btn); // when you click this demo button btn .setOnClickListener(new OnClickListener() { public void onClick(View v) { if (!flag) { btn.setBackgroundResource(R.drawable.imageonpress); flag=true; } else { btn.setBackgroundResource(R.drawable.image); flag=false; } } } 
     ImageButton Demo_button = (ImageButton)findViewById(R.id.firstimage); ImageButton second_button = (ImageButton)findViewById(R.id.secondimage); // when you click this demo button Demo_button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Demo_button.setImageResource(R.drawable.secondimage); second_button.setImageResource(R.drawable.firstimage); } } second_button.setOnClickListener(new OnClickListener() { public void onClick(View v) { Demo_button.setImageResource(R.drawable.firstimage); second_button.setImageResource(R.drawable.secondimage); } } 

    Ich hoffe du willst das richtig machen ???

    Was für mich gearbeitet hat, war:

    Ich habe eine neue, zerlegbare XML-Datei erstellt, zB image_state.xml

     <?xml version="1.0" encoding="utf-8"?> <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:state_pressed="true"> <bitmap android:src="@drawable/image_pressed"/> </item> <item> <bitmap android:src="@drawable/image"/> </item> </selector> 

    Und in meiner Layout-Datei setze ich den src des imageView als:

     <ImageView android:layout_width="wrap_content" android:layout_height="wrap_content" android:src="@drawable/image_state"/> 

    Der OnTouchListener ist viel besser für das, was du tun musst:

     myImageButton.setOnTouchListener(new OnTouchListener(){ public boolean onTouch(View v, MotionEvent event) { switch(event.getAction()) { case MotionEvent.ACTION_DOWN : myImageButton.setImageResource(R.drawable.image_when_pressed); break; case MotionEvent.ACTION_UP : myImageButton.setImageResource(R.drawable.image_when_released); break; } return false; } }); 
     float alpha_first = 0.2f; float alpha_second = 1.0f; AlphaAnimation alphadp = new AlphaAnimation(alpha_second, alpha_first); switch (v.getId()) { case R.id.disable_deactivate_pic: ImageButton disable_button =(ImageButton)findViewById(R.id.disable_deactivate_pic); if (!flag) { disable_button.setImageResource(R.drawable.enable_active); linearLayout_for_picture = (LinearLayout) findViewById(R.id.linearlayout_imageView_pic); alphadp.setFillAfter(true); linearLayout_for_picture.startAnimation(alphadp); flag=true; } else { disable_button.setImageResource(R.drawable.disable_active); alphadp.setFillAfter(false); linearLayout_for_picture.startAnimation(alphadp); flag=false; } break; 

    Wenn du ein ImageView oder ImageButton und das Bild von diesem ändern willst, wenn du gedrückt wirst, kannst du die Aktivität für jeden gedrückten ImageButton :

      fav.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { int isFavor = c.getInt(c.getColumnIndex("isFavor")); if(isFavor == 1){ db.execSQL("update content set isFavor=0 where ID="+idxx+";"); fav.setImageResource(R.drawable.favnot_ic); Toast.makeText(context.getApplicationContext(),"item cleaned",Toast.LENGTH_LONG).show(); activity.finish(); activity.overridePendingTransition(0, 0); context.startActivity(activity.getIntent()); } else{ db.execSQL("update content set isFavor=1 where ID=" + idxx + ";"); fav.setImageResource(R.drawable.fav_ic); Toast.makeText(context.getApplicationContext(),"Item added...",Toast.LENGTH_LONG).show(); activity.finish(); activity.overridePendingTransition(0, 0); context.startActivity(activity.getIntent()); } } }); 

    Wenn du die Auswahl bei Klick speichert und dann die Bildrolle Galerie (oder Scroll-Menü) neu lade und dann mit einem ersetzten Bild zur Auswahl klickst, kannst du es vielleicht machen. Soweit ich weiß, keine der eingebauten Galerie oder Menü-Funktionen haben die Möglichkeit, Bilder zu ersetzen, sobald sie geladen und angezeigt werden.

    Sie können dazu einen StateListDrawable . Diese Methode funktioniert auch für ImageButton s. Ich ziehe es vor, zusätzliche Zuhörer einzustellen.

    Ich habe auch eine Klasse von zusätzlichen Helfern zusammengestellt: http://alexanderwong.me/post/40799636705/android-change-background-image-drawable-on-press

      public static StateListDrawable makeStateDrawable(Drawable drawable, Drawable pressedDrawable, Drawable disabledDrawable) { boolean set = false; StateListDrawable stateDrawable = new StateListDrawable(); if (disabledDrawable != null) { set = true; stateDrawable.addState(new int[] { -android.R.attr.state_enabled }, disabledDrawable); } if (pressedDrawable != null) { set = true; stateDrawable.addState(new int[] { android.R.attr.state_pressed }, pressedDrawable); } if (drawable != null) { set = true; stateDrawable.addState(new int[0], drawable); } return set ? stateDrawable : null; } 

    Dies scheint der kürzeste Weg zu sein, um es zu erreichen, und erfordert nur XML, kein Java-Code:

    Speichern Sie die Datei als drawable / image_pressable.xml neben den beiden Bildern:

     <selector xmlns:android="http://schemas.android.com/apk/res/android"> <item android:drawable="@drawable/image_pressed" android:state_pressed="true" /> <item android:drawable="@drawable/image_regular" /> </selector> 

    Dann verweise es als:

     <ImageView android:src="@drawable/image_pressable" /> 

    Wenn du schon einen Knopf in ur app hast, der den Swap zwischen den beiden Bildern machen wirst, wenn es geklickt hat, dann gibt es einen einfachen Code: D

    // um Bilder in android zu addieren wir einfach "kopieren sie von ihrem standort und vorbei in (res -> ziehbar)"

    // dann per Drag & Drop "ImageView" und wähle das Bild aus, das du anzeigen möchte

    // Sie können den Maßstab werfen "scaleType, layout_Width & layout_Height"

     public boolean swap = true; public void change(View view) { ImageView i = (ImageView) findViewById(R.id.img); if (swap) { i.setImageResource(R.drawable.images); swap=false; } else { swap=true; i.setImageResource(R.drawable.couple); } } 
     Demo_button.setImageResource(R.drawable.secondimage) //Demo_button is your event holder (the button or imageview or bitmap file which contains the image) and secondimage is your image (drawable) file, without any complications. 

    Das macht den Trick.

    Das Android ist ein Google Android Fan-Website, Alles ΓΌber Android Phones, Android Wear, Android Dev und Android Spiele Apps und so weiter.