getResourcesID vom Drawable im View

Dieses Thema im Forum "Android App Entwicklung" wurde erstellt von peacefish, 17.10.2011.

  1. peacefish, 17.10.2011 #1
    peacefish

    peacefish Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    13.10.2011
    Hi,

    bin noch relativ neu in der Java/Android Programmierung und habe mal eine kleine Frage. Ich möchte das in einem View dargestellte image Beim Klick auf diesen wechseln. Damit möchte ich sozusagen die Images die ich in r/drawable abgelegt habe durchklicken können.
    der Wechsel auf ein bestimmtes image ist mir bereits gelungen:

    view.setImageResource(R.drawable.imageDasIchSetzenMöchte);

    Ich möchte aber sowas in dieser Art verwirklichen um das Image bei jedem Klick zu wechseln:

    view.setImageResource(view./*getCurrentImageResource()++*/);

    also benötige ich eine Funktion, die mir den Wert des Momentan im view dargestellten Images zurückgibt("getCurrentImageResource"). welche Funktion von view kann ich dazu verwenden?

    r/drawable
    Code:
      public static final class drawable {
            public static final int img1=0x7f020000;
            public static final int img2=0x7f020001;
    ...
           
        }
    
    Vielen Dank für euere Hilfe!
     
  2. sixi, 17.10.2011 #2
    sixi

    sixi Erfahrener Benutzer

    Beiträge:
    237
    Erhaltene Danke:
    64
    Registriert seit:
    20.01.2009
    Wenn du die Namen der Ressources kennst, bzw. das Schema (dein img1, img2, ... deutet darauf hin), dann kannst du dir die IDs über getIdentifier holen.
     
  3. DieGoldeneMitte, 18.10.2011 #3
    DieGoldeneMitte

    DieGoldeneMitte Android-Lexikon

    Beiträge:
    1,230
    Erhaltene Danke:
    256
    Registriert seit:
    05.02.2010
    Phone:
    Nexus 5X
    Tablet:
    Nexus 7 (2013)
    Ich würde das in etwa so machen:

    Code:
    public final static int[] ids = {
      R.drawable.img1, R.drawable.img2, ...
    };
    
    ...
    v.setImageDrawable( getResources().getDrawable(ids[current++ % ids.length]) );
    
     
    Zuletzt bearbeitet: 18.10.2011
  4. peacefish, 22.10.2011 #4
    peacefish

    peacefish Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    13.10.2011
    Hey, vielen Dank für die schnelle Rückmeldung.

    ich habe leider nicht ganz richtig ausgedrückt was ich eigentlich will. :)
    hier mal ein Code beispiel.

    Code:
    
    
    public class PicturesActivity extends Activity implements OnClickListener,  {
          
         
        ImageView x0y0,x1y0,x2y0,x0y1,x1y1,x2y1,x0y2,x1y2,x2y2,x3y0;
            
        int i=0x7f020000-1;
          
        
        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.main);
                 
        
            x0y0=(ImageView)findViewById(R.id.x0y0);
            ...    
               
                   
            
            x0y0.setOnClickListener(this);
            ...
    }
        
    
        public void onClick(View v) {
                    
            i++;
            if(i==0x7f020002)//blende Icon aus :) 
            {    i++;        }
          
             
            
            if(v.getId()==R.id.x0y0)
            {        x0y0.setImageResource(i);}
            ...       
            
            /**
    hier möchte ich über den view v die Imageresource ändern.
    Da ich ansonsten für jeden neuen imageview eine neue Bedingung einführen muss. Das muss doch irgendwie eleganter möglich sein.
    
    */
                    
            
            if(i==0x7f02000a)        {  i=0x7f020000-1;        }
             
                        
        }
    }
    
    
    
    Vielen Dank für euere Hilfe!
     
  5. peacefish, 22.10.2011 #5
    peacefish

    peacefish Threadstarter Neuer Benutzer

    Beiträge:
    3
    Erhaltene Danke:
    0
    Registriert seit:
    13.10.2011
    Hey,
    noch ein kleiner Fragen Zuschlag.
    Mein eigentliches Ziel ist das Programmieren eines Bahnschienenstreckeneditors für eine Modellbahn.

    (Soll dem Streckeneditor von der Märklin CentralStation nachempfunden sein)

    Das ganze soll vom Prinzip her wie folgt ablaufen(Siehe auch angehängte Skizze).

    Ich bin mir noch nicht ganz darüber im Klaren, welches Layout man für eine solche Aufgabe eleganter weise verwendet.

    Das layout soll horizontal und vertical scrollbar sein
    und auch zoombar.

    Jetzt Frage ich mich ob ich ein Table Layout oder ein Relative Layout verwenden soll.
    Kann ich das Scrollen und Zoomen mit beiden verwirklichen?
    oder gibt es einen komplett anderen Ansatz der hierfür eleganter/geeigneter ist?
    [​IMG]
    Vielen Dank Für euere Hilfe!
    [​IMG]
     

    Anhänge:

Diese Seite empfehlen