編輯:關於Android編程
獲得網絡上圖片的過程:
獲得圖片的Url—>通過Url連接圖片對象—>把讀到的圖片的二進制數據寫入內存—>返回內存中的數據—>顯示出來
首先,我們要添加權限
因為我們要訪問網絡,所以我們要在AndroidManifest.xml文件總添加網絡訪問權限:
package cn.itcast.image;
import cn.itcast.service.ImageService;
import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ImageView;
import android.widget.Toast;
public class MainActivity extends Activity {
private EditText pathText;
private ImageView imageView;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
pathText = (EditText) this.findViewById(R.id.imagepath);
imageView = (ImageView) this.findViewById(R.id.imageView);
Button button = (Button) this.findViewById(R.id.button);
button.setOnClickListener(new ButtonClickListener());
}
private final class ButtonClickListener implements View.OnClickListener{
public void onClick(View v) {
String path = pathText.getText().toString(); //得到文本框的url路徑
try{
//得到圖片的二進制數據
byte[] data = ImageService.getImage(path);
//把圖片轉換成bitmap類型
Bitmap bitmap = BitmapFactory.decodeByteArray(data, 0, data.length);
imageView.setImageBitmap(bitmap);//顯示圖片
}catch (Exception e) {
e.printStackTrace();
Toast.makeText(getApplicationContext(), R.string.error, 1).show();
}
}
}
}然後我們還要配置ImageService.java文件:
package cn.itcast.service;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;
import cn.itcast.utils.StreamTool;
public class ImageService {
/**
* 獲取網絡圖片的數據
* @param path 網絡圖片路徑
* @return
*/
public static byte[] getImage(String path) throws Exception{
//得到url
URL url = new URL(path);
HttpURLConnection conn = (HttpURLConnection) url.openConnection();//基於HTTP協議連接對象
conn.setConnectTimeout(5000);
conn.setRequestMethod("GET");//設置以get方式提交
if(conn.getResponseCode() == 200){ //如果響應碼等於200就是請求成功
InputStream inStream = conn.getInputStream(); //得到輸入流
return StreamTool.read(inStream); //得到圖片二進制數據
}
return null;
}
}
package cn.itcast.utils;
import java.io.ByteArrayOutputStream;
import java.io.InputStream;
public class StreamTool {
/**
* 讀取流中的數據
* @param inStream
* @return
* @throws Exception
*/
public static byte[] read(InputStream inStream) throws Exception{
ByteArrayOutputStream outStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len = 0;
while( (len = inStream.read(buffer)) != -1){//inStream.read(buffer)返回int:讀取到的數據長度,當讀到-1就是讀完了
outStream.write(buffer, 0, len); //把讀到的數據寫入內存
}
inStream.close();
return outStream.toByteArray(); //返回內存中的數據
}
}

Android連接Wifi詳細源碼
因項目需求,做一個有關wifi的Demo,現已經上傳到GitHub 上面地址:https://github.com/git-xuhao/WifiDemo源碼片段packa
Android自定義View繪圖實現漸隱動畫
實現了一個有趣的小東西:使用自定義View繪圖,一邊畫線,畫出的線條漸漸變淡,直到消失。效果如下圖所示:用屬性動畫或者漸變填充(Shader)可以做到一筆一筆的變化,但要
Android App中ListView仿QQ實現滑動刪除效果的要點解析
本來准備在ListView的每個Item的布局上設置一個隱藏的Button,當滑動的時候顯示。但是因為每次只要存在一個Button,發現每個Item上的Button相互間
Android中使用DialogFragment編寫對話框的實例教程
Android提供alert、prompt、pick-list,單選、多選,progress、time-picker和date-picker對話框,並提供自定義的dial