Androidはネット画像を取得


プロジェクトでは、ネットワークデータを取得することはよくあります.各データはサーバ側または直接print、または実体クラスでListに投げ込まれてjsonに変換され、クライアントがHttpClientのexecute()メソッドを使用して受信し、データインタラクションのプロセスを完了します.
画像の場合、スレ主は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));
            }
        });
    }
}