» 首頁 » 討論區 » Android程式設計 »顯示遠端ser 大量圖片

顯示遠端ser 大量圖片

發表人: ooaaa
積分: 158
發表時間: 2011-09-20 08:06:27
請問大大,如何在android 上 顯示大量的 遠端ser 上的圖片,並且應該用甚麼來顯示,可以的話 給個範例...thx
發表人: Seachaos
積分: 2432
發表時間: 2011-09-21 00:10:31
可以參考一下 這篇文章

裡面Android讓ImageView顯示網路上的圖片
[sea:javaCode]
URL url = new URL("http://www.myandroid.tw/style/images/logo.png");
HttpURLConnection con = (HttpURLConnection) url.openConnection();
InputStream is = con.getInputStream();
imageView.setImageBitmap(BitmapFactory.decodeStream(is));
[/sea]

但在網路慢的情況下可能會讓Activity Freeze,所以建議要開Thread來run
發表人: ooaaa
積分: 158
發表時間: 2011-09-22 10:46:51
我是要讀多張ser 的圖片.....我想可以用get 得到ser 的圖片名稱 再列出來..再運用你的範例..這樣可以做出來吧??
發表人: Seachaos
積分: 2432
發表時間: 2011-09-22 17:53:55
可以
主要是你要取得圖片的URL (http://xxxx)
就可以用了
發表人: ooaaa
積分: 158
發表時間: 2011-09-27 04:14:44
大大 有完整一點的範例嗎...因為我看過網路上的..但都不能跑..

我猜是我的路徑有打錯吧..我是想拿取 127.0.0.1/file/imgs/ 下的圖片..我想經過php 跟ser 端拿...大大有php 的範例嗎..?? 我在android 打 10.0.2.2/file/imgs/ 這樣他會讀到圖片嗎??


[sea:javaCode]
package com.list;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.ArrayList;
import org.apache.http.HttpEntity;
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.DefaultHttpClient;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import android.app.ListActivity;
import android.net.ParseException;
import android.os.Bundle;
import android.util.Log;
import android.widget.Toast;
public class city extends ListActivity {
JSONArray jArray;
String result = null;
InputStream is = null;
StringBuilder sb=null;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
ArrayList<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>();
//http post
try{
HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost("http://10.0.2.2/city.php");
httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
HttpResponse response = httpclient.execute(httppost);
HttpEntity entity = response.getEntity();
is = entity.getContent();
}catch(Exception e){
Log.e("log_tag", "Error in http connection"+e.toString());
}
//convert response to string
try{
BufferedReader reader = new BufferedReader(new InputStreamReader(is,"iso-8859-1"),8);
sb = new StringBuilder();
sb.append(reader.readLine() + "\n");
String line="0";
while ((line = reader.readLine()) != null) {
sb.append(line + "\n");
}
is.close();
result=sb.toString();
}catch(Exception e){
Log.e("log_tag", "Error converting result "+e.toString());
}
//paring data
int ct_id;
String ct_name;
try{
jArray = new JSONArray(result);
JSONObject json_data=null;
for(int i=0;i<jArray.length();i++){
json_data = jArray.getJSONObject(i);
ct_id=json_data.getInt("CITY_ID");
ct_name=json_data.getString("CITY_NAME");
}
}
catch(JSONException e1){
Toast.makeText(getBaseContext(), "No City Found" ,Toast.LENGTH_LONG).show();
} catch (ParseException e1) {
e1.printStackTrace();
}
}
}
}
[/sea]
發表人: ooaaa
積分: 158
發表時間: 2011-09-27 14:39:28
我已經有方法顯示一張圖片了...但不知道怎樣顯示大量的網上圖片

大大有可參考的範例嗎??
發表人: Seachaos
積分: 2432
發表時間: 2011-09-27 21:11:39
Hi, 你可以把你顯示圖片程式碼貼片斷上來嗎?
也許從那邊修改就可以了 :)
發表人: ooaaa
積分: 158
發表時間: 2011-09-27 23:33:41
我可以讀很多圖片了...我用了 畫廊的方法..但我又遇到另一個問題


[sea:javaCode]
try {
URLConnection connection = new URL(url).openConnection();
String contentType = connection.getHeaderField("Content-Type");
boolean isImage = contentType.startsWith("image/");
if(isImage){
HttpGet httpRequest = new HttpGet(url);
HttpClient httpclient = new DefaultHttpClient();
HttpResponse response = (HttpResponse) httpclient
.execute(httpRequest);
HttpEntity entity = response.getEntity();
BufferedHttpEntity bufferedHttpEntity = new BufferedHttpEntity(entity);

InputStream is = bufferedHttpEntity.getContent();
Drawable d = Drawable.createFromStream(is, "src Name");
return d;
}
else {
Bitmap b = BitmapFactory.decodeResource(getResources(), R.drawable.no_image);
Drawable d = new BitmapDrawable(b);
return d;
}
[/sea]

主要是 else 那個部份,,,就是我想讀圖片時 bitmap b 那個 怎樣才可以讀成網路圖片...大大有想法嗎??
發表人: Seachaos
積分: 2432
發表時間: 2011-09-27 23:46:06
你這個Function應該是抓網路上的圖片,回傳的是Drawable
在抓取圖片失敗的時候就會進到Else那邊
所以你要用的方法應該是

[sea:javaCode]
public Drawable getDrawableFromNet(String url){
// 上面你貼的Function
// URLConnection connec....
}

public ... 顯示部份{
....
Drawable draw = getDrawableFromNet("http://.....");
imageView.setBackgroundDrawable(draw);
}
[/sea]
發表人: ooaaa
積分: 158
發表時間: 2011-09-27 23:52:52
大大可以給你的聯絡方式給我嗎...我傳我那一頁給你看-.-...
發表人: Seachaos
積分: 2432
發表時間: 2011-09-28 00:05:50
ok
可以用EMail
發表人: 訪客
發表時間: 2011-09-28 04:18:40
我己寄信給你...收到的話回我一下THX
發表人: Seachaos
積分: 2432
發表時間: 2011-09-28 15:09:37
有收到了
目前看來是沒有問題
所以你的問題是在? 無法取得圖片嗎? 還是?
發表人: ooaaa
積分: 158
發表時間: 2011-09-29 19:10:09
我是讀到圖片.. 我的問題就是 如果令 Gallery 也得到我的圖片...因為我現在只能按下 Gallery 的畫格 跳出 我的圖片...我想做到 Gallery 畫格也是我的圖片...

就是 畫格是怎樣的圖片 按下去就去怎樣的圖片
發表人: Seachaos
積分: 2432
發表時間: 2011-09-29 23:30:29
Hi, 你的Code在Load Gallery和ImageView沒有任何問題
我把我修改的版本Mail給你看看 (這是我用MyAndroid來做測式的)

所以你的問題也許是URL不正確造成的?
還是你說的是另外一種效果?