2016-04-28 7 views
3

Ich arbeite an einer Sofort-Chat-Anwendung. Ich habe 3 Registerkarten in einer Aktivität, nämlich Chat, Gruppe und Kontakt.In Gruppenregister habe ich eine Listenansicht, die mit BaseAdapter.Now gefüllt ist Listenansicht kann Bilder enthalten. Beim Klicken auf das Bild möchte ich es im Vollbildmodus anzeigen.Bild wird im Vollbildmodus angezeigt, wenn Sie darauf klicken

Innen adpater ich bin mit folgendem Code auf, klicken Imageview:

//On clicking image,display the image in full screen 


imageView.setOnClickListener(new View.OnClickListener() { 
      @Override 
      public void onClick(View view) { 
       Intent intent = new Intent(context, FullImageActivity.class); 
       intent.putExtra("image", image); 
       context.startActivity(intent);    
      } 
     }); 

Here "Bild" ist die Basis 64 Darstellung eines Bildes.

FullImageActivity.java

public class FullImageActivity extends AppCompatActivity { 
    ImageView imgFullImage; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_full_image); 

     ///findViewBYID 
     imgFullImage = (ImageView) findViewById(R.id.fullImage); 

     Bundle bundle = getIntent().getExtras(); 
     String image = bundle.getString("image"); 
     Bitmap bitmap = decodeImage(image); 
     imgFullImage.setImageBitmap(bitmap); 
    }  

    private Bitmap decodeImage(String data) { 
     byte[] b = Base64.decode(data, Base64.DEFAULT); 
     Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length); 
     return bmp; 
    } 
} 

Aber es ist für mich nicht funktioniert .When i klicken Sie darauf FullIMageActivity bewegt und sofort wieder zur Gruppe Tab.Please helfen mich bewegen, es zu beheben.

+0

ein Bild als Teil des Vorsatzes Passing nicht so eine gute Idee sein kann :) Warum nicht Sie speichern das Bild irgendwo in Ihrem internen oder externen Speicher und den Weg zur nächsten Aktivität in der Absicht? –

+0

hey Deepak Machst du mit XMPP und Asmack lib .. ??? –

+0

@NikhilBorad: Ich benutze Socket.io-Client-Bibliothek in meiner App. –

Antwort

1

Du es falsch zu machen, das ist, wie Sie es tun können

In Ihrer ersten Aktivität

ImageView Konvertieren Erste

imageView.buildDrawingCache(); 
Bitmap bitmap = imageView.getDrawingCache(); 

Intent intent = new Intent(this, NewActivity.class); 
intent.putExtra("BitmapImage", bitmap); 

und in der zweiten Aktivität auf Bitmap

Bitmap bitmap = (Bitmap) intent.getParcelableExtra("BitmapImage"); 

Dann zeigen Sie Bitmap in Ihrem ImageView.

1

Hier Base64 Bild ist eine große Kette von Daten, die Absicht mit Pass auf andere Aktivität ist eine schlechte Idee, weil das in Ihnen kann Verlust Daten oder Anwendung mehr Last bekommen. das zur Verwendung, um eine Modellklasse zu machen, die im Geschäft Base64 string und es abrufen. Wie? siehe unten Code.

ModelBase64.java

class ModelBase64{ 
    public static String base64Image; 
} 

jetzt Bild Zeichenfolge base64Image

imageView.setOnClickListener(new View.OnClickListener() { 
     @Override 
     public void onClick(View view) { 
      ModelBase64.base64Image=image; 
      Intent intent = new Intent(context, FullImageActivity.class); 
      context.startActivity(intent);    
     } 
    }); 

nun in einer anderen Klasse zuweisen retrive

FullImageActivity.java

public class FullImageActivity extends AppCompatActivity { 
ImageView imgFullImage; 

@Override 
protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_full_image); 

    ///findViewBYID 
    imgFullImage = (ImageView) findViewById(R.id.fullImage); 

    // Bundle bundle = getIntent().getExtras(); 
    //String image = bundle.getString("image"); 
    String image = ModelBase64.base64Image; 
    Bitmap bitmap = decodeImage(image); 
    imgFullImage.setImageBitmap(bitmap); 
}  

private Bitmap decodeImage(String data) { 
    byte[] b = Base64.decode(data, Base64.DEFAULT); 
    Bitmap bmp = BitmapFactory.decodeByteArray(b, 0, b.length); 
    return bmp; 
} 
} 
0

Die für Sie am besten geeignete Lösung ist ImageViewPopUpHelper.

Quelle von dieser URL abrufen und einen Klassennamen "ImageViewPopUpHelper" erstellen. danach, wenn Sie auf klicken Pop-up sehen möchten, definieren setOnClicklistner auf diesem Bild wie

profile_image.setOnClickListener(new View.OnClickListener() 
{ 
    @Override public void onClick(View v) { 
     ImageViewPopUpHelper.enablePopUpOnClick(activity, profile_image, profile_image.getDrawable()); 
    } 
}); 
+0

sollten Sie etwas von Teilcode veröffentlichen und etwas erklären. und Sie können Link in Kommentar, der nicht die richtige Art und Weise ist –

+0

Quelle von dieser URL erhalten und einen Klassennamen "ImageViewPopUpHelper". Danach, wenn Sie Pop-up bei Klick sehen möchten, definieren Sie SetOnClicklistner auf diesem Bild wie profile_image.setOnClickListener (new View.OnClickListener()) @Override öffentlichen void onClick (View v) { ImageViewPopUpHelper.enablePopUpOnClick (Aktivität, profile_image, profile_image.getDrawable()); } }); –

+0

Bekam Bruder ..? –

Verwandte Themen