Androidはネット画像を取得
プロジェクトでは、ネットワークデータを取得することはよくあります.各データはサーバ側または直接print、または実体クラスでListに投げ込まれてjsonに変換され、クライアントがHttpClientのexecute()メソッドを使用して受信し、データインタラクションのプロセスを完了します.
画像の場合、スレ主はurlを利用して画像オブジェクトを取得する方法を採用します.
GetPicture.java
使用方法:
//画像オブジェクトの取得
String url="ピクチャurl";
GetPicture getPicture = new GetPicture();
Bitmap picture = getPicture.getNetPicture(url);
MainActivity.java:
画像の場合、スレ主はurlを利用して画像オブジェクトを取得する方法を採用します.
GetPicture.java
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import org.apache.http.HttpResponse;
import org.apache.http.HttpStatus;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.apache.http.params.CoreConnectionPNames;
import java.io.IOException;
import java.io.InputStream;
/**
*
* pictureUrl: url, ,
*/
public class GetPicture {
private Bitmap picture;
public Bitmap getNetPicture(final String pictureUrl){
new Thread(new Runnable() {
@Override
public void run() {
Bitmap img = null;
HttpClient client = null;
HttpGet request = null;
HttpResponse response = null;
try {
request = new HttpGet(pictureUrl);
client = new DefaultHttpClient();
client.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 1000 * 5); //
client.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT,1000 * 5); //
response = client.execute(request);
if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
InputStream is = response.getEntity().getContent();
img = BitmapFactory.decodeStream(is);
showToast(" :"+pictureUrl+" !");
} else {
showToast(" :"+pictureUrl+" !");
}
} catch (ClientProtocolException e) {
e.printStackTrace();
showToast(e.getMessage());
} catch (IOException e) {
e.printStackTrace();
showToast(e.getMessage());
}
picture = img;
}
}).start();
return picture;
}
private void showToast(String words) {
System.out.println(words);
}
}
コードに示すようにurlにアクセスしてピクチャオブジェクトを取得し、ファイルストリームを利用してメモリへのキャッシュを実現し、最後に必要な場所にreturnを与える使用方法:
//画像オブジェクトの取得
String url="ピクチャurl";
GetPicture getPicture = new GetPicture();
Bitmap picture = getPicture.getNetPicture(url);
MainActivity.java:
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
import com.absolom.GetNetPicture.Tools.GetPicture;
public class MainActivity extends AppCompatActivity {
Button GetPicture1;
Button GetPicture2;
ImageView ImageView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
String url1 = "http://e.hiphotos.baidu.com/zhidao/pic/item/8cb1cb1349540923f12939199458d109b3de4910.jpg";
String url2 = "http://e.hiphotos.baidu.com/zhidao/pic/item/aec379310a55b31907d3ba3c41a98226cffc1754.jpg";
ImageView = (ImageView)findViewById(R.id.ImageView);
GetPicture getPicture = new GetPicture();
GetPicture1 = (Button)findViewById(R.id.GetPicture1);
GetPicture2 = (Button)findViewById(R.id.GetPicture2);
GetPicture1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageView.setImageBitmap(getPicture.getNetPicture(url1));
}
});
GetPicture2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
ImageView.setImageBitmap(getPicture.getNetPicture(url2));
}
});
}
}