package weixinlookimgsdemo.hankkin.com.savegifpic; import android.app.Activity; import android.app.ProgressDialog; import android.graphics.Bitmap; import android.graphics.BitmapFactory; import android.os.AsyncTask; import android.os.Environment; import android.support.v7.app.AppCompatActivity; import android.os.Bundle; import android.view.View; import android.widget.Button; import android.widget.ImageView; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.InputStream; import java.net.HttpURLConnection; import java.net.MalformedURLException; import java.net.URL; public class MainActivity extends Activity { private Button button,button2; private ImageView imageView; private String image_Path = "http://e.hiphotos.baidu.com/image/pic/item/2fdda3cc7cd98d10b510fdea233fb80e7aec9021.jpg"; private ProgressDialog dialog; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); button = (Button) findViewById(R.id.button1); button2 = (Button) findViewById(R.id.button2); imageView = (ImageView) findViewById(R.id.imageView1); dialog = new ProgressDialog(this); dialog.setTitle("提示信息"); dialog.setMessage("正在下载,请稍候..."); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View arg0) { new MYTask().execute(image_Path); } }); button2.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { } }); } public class MYTask extends AsyncTask<String, Void, Bitmap> { @Override protected void onPreExecute() { super.onPreExecute(); dialog.show(); } @Override protected Bitmap doInBackground(String... arg0) { URL url = null; Bitmap bitmap = null; try { url = new URL(arg0[0]); HttpURLConnection con = (HttpURLConnection) url.openConnection(); con.setRequestMethod("GET"); con.setConnectTimeout(1000 * 6); if (con.getResponseCode() == 200) { InputStream inputStream = con.getInputStream(); //将输入流转换字节数组 byte[] b = getByte(inputStream); //读取字节转换成bitmap,将Bitmap返回,更新ui bitmap= BitmapFactory.decodeByteArray(b, 0, b.length); // 首先保存图片 File appDir = new File(Environment.getExternalStorageDirectory(), "保存图片"); if (!appDir.exists()) { appDir.mkdir(); } String fileName = System.currentTimeMillis() + ".jpg"; File file = new File(appDir, fileName); FileOutputStream fileOutputStream = new FileOutputStream(file); fileOutputStream.write(b); fileOutputStream.close(); } } catch (java.io.IOException e) { e.printStackTrace(); } catch (Exception e) { e.printStackTrace(); } return bitmap; } /** * 主要是更新UI的操作 */ @Override protected void onPostExecute(Bitmap result) { super.onPostExecute(result); imageView.setImageBitmap(result); dialog.dismiss(); } } private byte[] getByte(InputStream inputStream) throws Exception { byte[] b = new byte[1024]; ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); int len = -1; while ((len = inputStream.read(b)) != -1) { byteArrayOutputStream.write(b, 0, len); } byteArrayOutputStream.close(); inputStream.close(); return byteArrayOutputStream.toByteArray(); } }
异步下载网络图片并保存
最新推荐文章于 2018-07-13 13:32:23 发布