2016-04-28 64 views
3

我正在開發一個即時聊天應用程序。我在一個活動即聊天,組和聯繫人中有3個選項卡。組選項卡中,我有一個列表視圖,使用BaseAdapter.Now列表視圖可以包含圖像。點擊圖像時,我想要全屏顯示它。全屏顯示圖像點擊它

內部adpater我使用下面的代碼上點擊的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);    
      } 
     }); 

這裏的「圖象」是圖像的基部64表示。

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; 
    } 
} 

但它不是爲我工作。當我點擊它移動到FullIMageActivity瞬間搬回集團Tab.Please幫我解決這個問題。

+0

傳遞的圖像作爲意圖的一部分可能不是一個好主意:)你爲什麼不保存在某個地方的形象在你的內部或外部存儲並提供意向下一個活動的路徑? –

+0

嘿Deepak你用XMPP和Asmack自制lib ..嗎? –

+0

@NikhilBorad:我正在使用套接字。io客戶端庫在我的應用程序。 –

回答

1

你做錯了,這是你如何能做到這

在你的第一個活動

轉換ImageView爲位圖首先

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

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

,並在第二活動

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

然後在您的中顯示位圖。

1

這裏Base64圖像是可以意圖傳遞給其他活動的大字符串數據是不好的想法,因爲在你可以丟失數據或應用程序獲得更多的負載。用於製作一個存儲Base64字符串並檢索它的模型類。 如何?見代碼

ModelBase64.java

class ModelBase64{ 
    public static String base64Image; 
} 

現在分配圖像串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);    
     } 
    }); 

另一類

FullImageActivity.java

現在retrive
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

只爲你最適合的解決方案是ImageViewPopUpHelper。 https://github.com/juliomarcos/ImageViewPopUpHelper

從此URL獲取源代碼並生成類名「ImageViewPopUpHelper」。之後,每當你想看到彈出的點擊,該圖像上定義setOnClicklistner像

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

你應該發佈一些部分代碼並解釋一些東西。並且您可以在評論中發佈不正確的鏈接 –

+0

從此URL獲取源代碼並創建一個類名「ImageViewPopUpHelper」。之後,當你想看到彈出點擊時,定義setOnClicklistner在該圖像像profile_image.setOnClickListener(新的View.OnClickListener(){ @Override public void onClick(View v){ ImageViewPopUpHelper.enablePopUpOnClick(activity,profile_image, profile_image.getDrawable()); } }); –

+0

明白了兄弟..? –