編輯:關於Android編程
URL對象中前而幾個方法都非常容易理解,而該對象提供的openStream()可以讀取該 URL資源的InputStream,通過該方法可以非常方便地讀取遠程資源。
下面的程序示范如何通過URL類讀取遠程資源:
1)只顯示網絡圖片
2)顯示並下載網絡圖片
1)只顯示網絡圖片
a) activity_main.xml
b)MainActivity.java
package dujun.king.urlgetimage; import java.io.InputStream; import java.net.URL; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.MenuItem; import android.widget.ImageView; public class MainActivity extends Activity { Bitmap bitmap; ImageView imageview; Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what==0x9527) { //顯示從網上下載的圖片 imageview.setImageBitmap(bitmap); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageview=(ImageView)findViewById(R.id.imageView1); //創建並啟動一個新線程用於從網絡上下載圖片 new Thread(){ @Override public void run() { try { //創建一個url對象 URL url=new URL(http://www.baidu.com/img/bdlogo.png); //打開URL對應的資源輸入流 InputStream is= url.openStream(); //從InputStream流中解析出圖片 bitmap = BitmapFactory.decodeStream(is); // imageview.setImageBitmap(bitmap); //發送消息,通知UI組件顯示圖片 handler.sendEmptyMessage(0x9527); //關閉輸入流 is.close(); } catch (Exception e) { e.printStackTrace(); } } }.start(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }c)AndroidMainifest.xml
2)如果我們要顯示並下載網絡圖片,只需要將MainActivity.java文件修改如下:
package dujun.king.urlgetimage; import java.io.InputStream; import java.io.OutputStream; import java.net.URL; import android.app.Activity; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.view.Menu; import android.view.MenuItem; import android.widget.ImageView; public class MainActivity extends Activity { Bitmap bitmap; ImageView imageview; Handler handler=new Handler(){ @Override public void handleMessage(Message msg) { if (msg.what==0x9527) { //顯示從網上下載的圖片 imageview.setImageBitmap(bitmap); } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); imageview=(ImageView)findViewById(R.id.imageView1); //創建並啟動一個新線程用於從網絡上下載圖片 //這裡必須新起一個線程,Android後面的版本中,不允許在主線程中聯網 new Thread(){ @Override public void run() { try { //創建一個url對象 URL url=new URL(http://www.baidu.com/img/bdlogo.png); //打開URL對應的資源輸入流 InputStream is= url.openStream(); //從InputStream流中解析出圖片 bitmap = BitmapFactory.decodeStream(is); // imageview.setImageBitmap(bitmap); //發送消息,通知UI組件顯示圖片 handler.sendEmptyMessage(0x9527); //關閉輸入流 is.close(); //------------------------------ //下載網絡圖片 //再次打開資源流 is = url.openStream(); //打開手機對應的輸出流 //存放在手機中,並命名為baidulogo.png OutputStream os = openFileOutput(baidulogo.png, MODE_WORLD_READABLE); byte[] buff = new byte[1024]; int len = 0; //因為網絡下載一般不可能一次下載完畢,我們將每次下載好的有效數據寫入 while ((len = is.read(buff)) > 0) { os.write(buff,0,len); } //關閉流 is.close(); os.close(); } catch (Exception e) { e.printStackTrace(); } } }.start(); } @Override public boolean onCreateOptionsMenu(Menu menu) { // Inflate the menu; this adds items to the action bar if it is present. getMenuInflater().inflate(R.menu.main, menu); return true; } @Override public boolean onOptionsItemSelected(MenuItem item) { // Handle action bar item clicks here. The action bar will // automatically handle clicks on the Home/Up button, so long // as you specify a parent activity in AndroidManifest.xml. int id = item.getItemId(); if (id == R.id.action_settings) { return true; } return super.onOptionsItemSelected(item); } }
參考文獻:瘋狂Android講義(第2版) 李剛編著
原文地址:http://blog.csdn.net/qingdujun/article/details/39271479
(1)使用數據庫mysql,腳本語言如下: /* 用戶表*/ CREATE TABLE `usertbl` ( `id` int(11) NOT NULL AUTO_
進行軟件開發時,通常我們都喜歡使用較新版本的工具,但這裡我為什麼使用低版本的SDK來開發Andr
?? Android開發中,我們可能會遇到過一些很復雜的布局,對於初學者來說,可能腦子會嗡的一下,“這麼復雜!該怎麼整?!”。 不要擔心!再復雜的
實現思路:該View是通過ListView實現的,通過實體兩個字段內容content和時間time來展示每個ListItem時間軸是使用上面一條線(20dp)