连网获取图片的小程序
这些文件实际存放在电脑的硬盘上,通过tomcat已经做好了映射:参考
1 package net.blogjava.mobile; 2 3 import java.io.BufferedReader; 4 import java.io.InputStream; 5 import java.io.InputStreamReader; 6 import java.net.URL; 7 import java.net.URLConnection; 8 import java.util.ArrayList; 9 import java.util.List; 10 11 import android.app.ListActivity; 12 import android.content.Context; 13 import android.content.Intent; 14 import android.graphics.Bitmap; 15 import android.graphics.BitmapFactory; 16 import android.os.Bundle; 17 import android.util.Log; 18 import android.view.LayoutInflater; 19 import android.view.Menu; 20 import android.view.MenuInflater; 21 import android.view.MenuItem; 22 import android.view.View; 23 import android.view.ViewGroup; 24 import android.widget.BaseAdapter; 25 import android.widget.ImageView; 26 import android.widget.LinearLayout; 27 import android.widget.RatingBar; 28 import android.widget.TextView; 29 30 public class Main extends ListActivity 31 { 32 33 34 @Override 35 public boolean onCreateOptionsMenu(Menu menu) { 36 37 38 MenuInflater inflater = getMenuInflater(); 39 inflater.inflate(R.menu.menu, menu);//调用第二步中定义的Menu界面描述文件 40 return true; 41 42 } 43 44 45 @Override 46 public boolean onOptionsItemSelected(MenuItem item) { 47 // TODO Auto-generated method stub 48 Intent intent = new Intent(Main.this, Main.class); 49 startActivity(intent); 50 //close this activity 51 finish(); 52 return true; 53 } 54 55 56 public class ApkListAdapter extends BaseAdapter 57 { 58 private Context context; 59 private LayoutInflater layoutInflater; 60 private String inflater = Context.LAYOUT_INFLATER_SERVICE; 61 private String rootUrl = "http://192.168.43.62/apk/"; 62 private String listUrl = rootUrl + "list.txt"; 63 private List<ImageData> imageDataList = new ArrayList<ImageData>(); 64 65 class ImageData 66 { 67 public String url; 68 public String applicationName; 69 public float rating; 70 } 71 72 private InputStream getNetInputStream(String urlStr) 73 { 74 try 75 { 76 URL url = new URL(urlStr); 77 URLConnection conn = url.openConnection(); 78 conn.connect(); 79 InputStream is = conn.getInputStream(); 80 return is; 81 } 82 catch (Exception e) 83 { 84 85 } 86 return null; 87 } 88 89 public ApkListAdapter(Context context) 90 { 91 this.context = context; 92 layoutInflater = (LayoutInflater) context 93 .getSystemService(inflater); 94 try 95 { 96 InputStream is = getNetInputStream(listUrl); 97 InputStreamReader isr = new InputStreamReader(is, "GBK"); 98 BufferedReader br = new BufferedReader(isr); 99 String s = null; 100 while ((s = br.readLine()) != null) 101 { 102 String[] data = s.split(","); 103 if (data.length > 2) 104 { 105 ImageData imageData = new ImageData(); 106 imageData.url = data[0]; 107 Log.d("aa", imageData.url); 108 imageData.applicationName = data[1]; 109 imageData.rating = Float.parseFloat(data[2]); 110 imageDataList.add(imageData); 111 } 112 } 113 is.close(); 114 } 115 catch (Exception e) 116 { 117 // TODO: handle exception 118 } 119 } 120 121 @Override 122 public int getCount() 123 { 124 return imageDataList.size(); 125 } 126 127 @Override 128 public Object getItem(int position) 129 { 130 return position; 131 } 132 133 @Override 134 public long getItemId(int position) 135 { 136 return position; 137 } 138 139 @Override 140 public View getView(int position, View convertView, ViewGroup parent) 141 { 142 LinearLayout linearLayout = (LinearLayout) layoutInflater.inflate( 143 R.layout.item, null); 144 ImageView ivLogo = (ImageView) linearLayout 145 .findViewById(R.id.ivLogo); 146 147 TextView tvApplicationName = ((TextView) linearLayout 148 .findViewById(R.id.tvApplicationName)); 149 150 TextView tvRating = (TextView) linearLayout 151 .findViewById(R.id.tvRating); 152 RatingBar ratingBar = (RatingBar) linearLayout 153 .findViewById(R.id.ratingbar); 154 155 tvApplicationName 156 .setText(imageDataList.get(position).applicationName); 157 tvRating 158 .setText(String.valueOf(imageDataList.get(position).rating)); 159 ratingBar.setRating(imageDataList.get(position).rating); 160 161 try 162 { 163 InputStream is = getNetInputStream(rootUrl 164 + imageDataList.get(position).url); 165 Bitmap bitmap = BitmapFactory.decodeStream(is); 166 is.close(); 167 ivLogo.setImageBitmap(bitmap); 168 } 169 catch (Exception e) 170 { 171 } 172 173 return linearLayout; 174 } 175 } 176 177 @Override 178 public void onCreate(Bundle savedInstanceState) 179 { 180 super.onCreate(savedInstanceState); 181 ApkListAdapter apkListAdapter = new ApkListAdapter(this); 182 setListAdapter(apkListAdapter); 183 184 } 185 }
要想实现最终的功能,手机和电脑必须在同一个内网上,手机建立热点,电脑连上。
最终效果:
在台式机上发现
http://219.245.64.92:8080/apk/ 本机IP
http://219.245.64.1:8080/apk/ 都能找到
哈哈,发现最终可能是师兄留下的,原来别人早已干过,惭愧!