在我的應用程序Android中,我試圖從套接字服務器接收一些圖像,但我無法用setImageBitmap()顯示它們。我沒有任何錯誤,但我的屏幕保持白色。 這裏是我的代碼:顯示位圖setImageBitmap
public class CommunicateurAndroid implements Runnable {
public CommunicateurAndroid(Socket s, ImageView img) {
_imageV = img;
try {
_din = new DataInputStream(s.getInputStream());
_dout = new DataOutputStream(s.getOutputStream());
} catch (IOException e) {
e.printStackTrace();
}
new Thread(this).start();
}
public void run() {
int length = 0;
byte tmp;
while (true) try {
length = _din.readInt();
byte tab[] = new byte[length];
for (int i = 0; i < length; i++) {
tmp = _din.readByte();
tab[i] = tmp;
}
_image = BitmapFactory.decodeByteArray(tab, 0, tab.length);
System.out.println("----------");
if (_image != null) {
_imageV.setImageBitmap(_image);
System.out.println("TEST");
Thread.sleep(5000);
}
} catch (IOException e) {
e.printStackTrace();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
public Bitmap get_image() {
return _image;
}
private DataInputStream _din;
private DataOutputStream _dout;
private Bitmap _image;
private ImageView _imageV;
}
我調用構造函數這一行
new CommunicateurAndroid(_socket, (ImageView) findViewById(R.id.ImageView3_Left));
任何人可以幫助我嗎?
告訴你看到哪個println(),長度和tab.length的值是多少?它是否等於發送的圖像的大小? _image是否爲空?請提供正常的調試信息 – greenapps 2015-04-01 20:45:05
我看到了所有println()s(「----------」和「TEST」),並且length和tab.length的值是相同的並且等於發送圖像的大小。 – user4738964 2015-04-05 15:37:27
您應該將位圖設置爲主線程中的ImageView。我想知道爲什麼你沒有運行時錯誤。 – greenapps 2015-04-05 16:07:55