使用OKhttp載入網路上的圖片
阿新 • • 發佈:2018-12-23
public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button btnOK; private ImageView imgShow; private String Path = "http://g.hiphotos.baidu.com/zhidao/pic/item/1e30e924b899a901da2aece318950a7b0308f5cc.jpg"; private static final int SUCCESS = 1; private static final int FALL = 2; Handler handler = new Handler(){ @Override public void handleMessage(Message msg) { switch (msg.what){ //載入網路成功進行UI的更新,處理得到的圖片資源 case SUCCESS: //通過message,拿到位元組陣列 byte[] Picture = (byte[]) msg.obj; //使用BitmapFactory工廠,把位元組陣列轉化為bitmap Bitmap bitmap = BitmapFactory.decodeByteArray(Picture, 0, Picture.length); //通過imageview,設定圖片 imgShow.setImageBitmap(bitmap); break; //當載入網路失敗執行的邏輯程式碼 case FALL: Toast.makeText(MainActivity.this, "網路出現了問題", Toast.LENGTH_SHORT).show(); break; } } }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); initView(); } private void initView() { btnOK = (Button) findViewById(R.id.btnOK); imgShow = (ImageView) findViewById(R.id.imgShow); btnOK.setOnClickListener(this); } @Override //根據點選事件獲取網路上的圖片資源,使用的是okhttp框架 public void onClick(View v) { switch (v.getId()) { case R.id.btnOK: //1.建立一個okhttpclient物件 OkHttpClient okHttpClient = new OkHttpClient(); //2.建立Request.Builder物件,設定引數,請求方式如果是Get,就不用設定,預設就是Get Request request = new Request.Builder() .url(Path) .build(); //3.建立一個Call物件,引數是request物件,傳送請求 Call call = okHttpClient.newCall(request); //4.非同步請求,請求加入排程 call.enqueue(new Callback() { @Override public void onFailure(Call call, IOException e) { } @Override public void onResponse(Call call, Response response) throws IOException { //得到從網上獲取資源,轉換成我們想要的型別 byte[] Picture_bt = response.body().bytes(); //通過handler更新UI Message message = handler.obtainMessage(); message.obj = Picture_bt; message.what = SUCCESS; handler.sendMessage(message); } }); break; } } }