349 Stimmen

Bildansicht aus Dateipfad anzeigen?

Ich muss ein Bild nur anhand des Dateinamens und nicht anhand der Ressourcenkennung anzeigen.

ImageView imgView = new ImageView(this);
imgView.setBackgroundResource(R.drawable.img1);

Ich habe das Bild img1 im zeichenbaren Ordner. Ich möchte dieses Bild aus der Datei anzeigen.

Wie kann ich das tun?

3voto

Pong Petrung Punkte 1437

OnLoadImage Vollständiges Laden

private void onLoadImage(final String imagePath) {
    ImageSize targetSize = new ImageSize(imageView.getWidth(), imageView.getHeight()); // result Bitmap will be fit to this size

    //ImageLoader imageLoader = ImageLoader.getInstance(); // Get singleto
    com.nostra13.universalimageloader.core.ImageLoader imageLoader = com.nostra13.universalimageloader.core.ImageLoader.getInstance();
    imageLoader.init(ImageLoaderConfiguration.createDefault(getContext()));

    imageLoader.loadImage(imagePath, targetSize, new SimpleImageLoadingListener() {
        @Override
        public void onLoadingStarted(final String imageUri, View view) {
            super.onLoadingStarted(imageUri, view);

            progress2.setVisibility(View.VISIBLE);

            new Handler().post(new Runnable() {
                public void run() {
                    progress2.setColorSchemeResources(android.R.color.holo_green_light, android.R.color.holo_orange_light, android.R.color.holo_red_light);

                    // Picasso.with(getContext()).load(imagePath).into(imageView);
                    // Picasso.with(getContext()).load(imagePath) .memoryPolicy(MemoryPolicy.NO_CACHE, MemoryPolicy.NO_STORE).into(imageView);

                    Glide.with(getContext())
                            .load(imagePath)
                            .asBitmap()
                            .into(imageView);
                }
          });
        }

        @Override
        public void onLoadingComplete(String imageUri, View view, Bitmap loadedImage) {
            if (view == null) {
                progress2.setVisibility(View.INVISIBLE);
            }
            // else { 
              Log.e("onLoadImage", "onLoadingComplete");
            //   progress2.setVisibility(View.INVISIBLE);
            // }
            // setLoagingCompileImage();
        }

        @Override
        public void onLoadingFailed(String imageUri, View view, FailReason failReason) {
            super.onLoadingFailed(imageUri, view, failReason);
            if (view == null) {
                progress2.setVisibility(View.INVISIBLE);
            }
            Log.e("onLoadingFailed", imageUri);
            Log.e("onLoadingFailed", failReason.toString());
        }

        @Override
        public void onLoadingCancelled(String imageUri, View view) {
            super.onLoadingCancelled(imageUri, view);
            if (view == null) {
                progress2.setVisibility(View.INVISIBLE);
            }
            Log.e("onLoadImage", "onLoadingCancelled");
        }
    });
}

3voto

Stephen Punkte 165

Die meisten Antworten funktionieren, aber niemand hat erwähnt, dass das hochauflösende Bild die App verlangsamen wird. In meinem Fall habe ich Bilder RecyclerView verwendet, die 0,9 GB Gerätespeicher in nur 30 Bildern beanspruchten.

I/Choreograph: 73 Bilder übersprungen! Die Anwendung macht vielleicht zu viel viel Arbeit auf ihrem Haupt-Thread.

Die Lösung ist Sipmle Sie können die Qualität wie hier verschlechtern: Auflösung des Bitmaps verkleinern

Aber ich benutze Simple way, Glide erledigt den Rest der Arbeit

fanContext?.let {
            Glide.with(it)
                .load(Uri.fromFile(File(item.filePath)))
                .into(viewHolder.imagePreview)
        }

2voto

sweety dubey Punkte 59
private void showImage(ImageView img, String absolutePath) {

    BitmapFactory.Options options = new BitmapFactory.Options();
    options.inSampleSize = 8;
    Bitmap bitmapPicture = BitmapFactory.decodeFile(absolutePath);
    img.setImageBitmap(bitmapPicture);

}

-7voto

ncn corp Punkte 117
mageView.setImageResource(R.id.img);

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X