Ä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

  • AutoCompleteTextView zeigt kein Dropdown-Menü an, wenn ich nach dem Eingeben eines vollständigen Wortes die Leertaste drücke
  • Verwenden von Google Play Services LocationClient im Hintergrunddienst
  • Failed Auflösung von: Lcom / google / devtools / build / android / desugar / Laufzeit / ThrowableExtension;
  • AppWidgets programmgesteuert entfernen
  • Wie können wir die Links von TextView in Webview öffnen?
  • ListFragment Item Ausgewählter Hintergrund
  • CoordinatorLayout (AppbarLayout) zeichnet die Symbolleiste nicht ordnungsgemäß
  • Set android datepicker Datumsgrenzen
  • Entfernen Sie große Padding nach Hamburger (Menü) Symbol in Android Toolbar?
  • GetApplication () vs. getApplicationContext ()
  • HTTP bekommt mit Header mit RestTemplate
  • Android HttpClient OOM auf 4G / LTE (HTC Thunderbolt)
  • 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.