Image ViewPager Bitmap ersetzen.

  • 5 Antworten
  • Letztes Antwortdatum
C

CoffeeCode

Ambitioniertes Mitglied
2
Ich habe eine Activity erstellt mit der ich das Bild welches angezeigt wird bearbeiten kann. Dazu wird das Bild als Bitmap gefiltert und das alte Bild wird in der ImageView ersetzt.

Das ganze würde ich aber in dem ViewPager machen ohne extra in diese Activity zu wechseln. Dazu müsste ich einzig das aktuell angezeigte Bild durch das austauschen welches ich gefiltert habe.
Ich weiß nur leider nicht wie ich die aktuell Bitmap in der ImageView durch mein gefilterte Bitmap austausche.

Die Frage also, wie kann ich das aktuell angezeite Bild im Viewpager duch ein anderes austauschen.

Mein Image View Pager
https://gist.github.com/anonymous/e965a624b54b15a65f2c

Die Filter Activity die im View Pager funktionieren soll.
https://gist.github.com/anonymous/39dca3241da217b82a52
 
Zuletzt bearbeitet:
Was ist denn imageLoader für ein Objekt?
Und wann setzt dieses die src für die imageView?

Genau an der Stelle kannst du doch statt dem gegebenem Bild die makeBitmap Methode aus deiner anderen Activity nutzen.
Die Methode kannst du übrigens denke ich static machen und in eine eigene Klasse auslagern die nutzt ja bis auf eine Stelle keine Methoden der Activity.
getWindowManager().getDefaultDisplay() und den Defautl Display kannst du ja als Parameter übergeben.
 
imageLoader ist dieses Library. https://github.com/nostra13/Android-Universal-Image-Loader
Es ist glaube nicht optimal für mein Problem da es eigentlich für WebURL's ist. Allerdings bin ich nicht fortgeschritten genug um es anders zu lösen.

Es übernimmt das erstellen der Thumbs, es benötigt nur die FilePaths der Bilder.

ImageView wird im ImagePagerAdapter in der Methode instanciateItem.

Code:
        @Override
        public Object instantiateItem(ViewGroup view, int position) {
            View imageLayout = inflater.inflate(R.layout.item_pager_image, view, false);
            ImageView imageView = (ImageView) imageLayout.findViewById(R.id.image);
            final ProgressBar spinner = (ProgressBar) imageLayout.findViewById(R.id.loading);

            imageLoader.displayImage(images[position], imageView, options, new SimpleImageLoadingListener() {...);
                }

                @Override
                public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
                    spinner.setVisibility(View.GONE);
                }
            });

            ((ViewPager) view).addView(imageLayout, 0);
            return imageLayout;
        }


ich habe versicht die View einfach Manuell zu setzen. Mit dem Code wird allerdings nur das erste Bild im ViewPager geändert, also nicht umbedingt das welches man gerade sieht.
Code:
public void setImage(){
        ImageView imageView = (ImageView) findViewById(R.id.image);
        imageView.setImageDrawable( getResources().getDrawable( R.drawable.ic_action_camera ));
        pager.getCurrentItem();
    }
 
Zuletzt bearbeitet:
Ich bin mir gerade nicht so sicher, da ich nicht genau weiß was die Lib so alles tut.
aber eigentlich solltest du damit an das aktuelle ImageView Objekt kommen.

Versuch es evtl mal mit pager.findViewById()
Aber für mehr Infos müsste ich das mal ausprobieren.
 
ich bräuchte sowas wie pager.getViewByID(aktuellePosition);
und dann müsste ich die view ändern. ich glaube das geht mit dem Adapter den ich nutze nicht.
Ich vermute das ich den FragmentPagerAdapter nutzen müsste. FragmentPagerAdapter | Android Developers

Werde ich morgen mir mal anschauen.

Der ursprüngliche Beitrag von 01:58 Uhr wurde um 01:59 Uhr ergänzt:




ah sehe jetzt findeViewById gibt einem das View Objetkt zurück :D
Ok vielleicht ist es ja das was ich suche.
 
Zuletzt bearbeitet von einem Moderator:
habs nun so gelöst.

im Adapter tue ich beim instanzieren jeder View dem ImageView eine eigene Id geben unzwar die positionsnummer.

Code:
            imageView.setId(position);

wenn ich meine setFilterImage(); Funktion ausführe kann ich die aktuell angezeigte View hiermit finden und ändern


Code:
    public void setFilterImage(){
        ImageView currentImageView = (ImageView) findViewById(pager.getCurrentItem());
        currentImageView.setImageDrawable( getResources().getDrawable( R.drawable.ic_action_camera ));
    }
 
Zurück
Oben Unten