package com.application.asyncdemo;

import androidx.appcompat.app.AppCompatActivity;

import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.URL;

public class MainActivity extends AppCompatActivity {

    URL url = null;
    InputStream inputStream;
    Bitmap bitmap=null;
    ImageView imageView;
    ProgressDialog progressDialog;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

    public void Load_Image(View view)
    {
        Button button = findViewById(R.id.LoadImage);
        imageView = findViewById(R.id.ImageView1);
        AsyncExample AsyncTask = new AsyncExample();
        AsyncTask.execute("https://www.bigstockphoto.com/images/homepage/module-6.jpg");
    }

    public class AsyncExample extends AsyncTask<String, String, Bitmap>{

        @Override
        protected void onPreExecute() {
            super.onPreExecute();
            progressDialog = new ProgressDialog(MainActivity.this);
            progressDialog.setMessage("Please wait while image is downloading");
            progressDialog.show();
        }

        @Override
        protected Bitmap doInBackground(String... strings) {

            try {
                url = new URL(strings[0]);
                HttpURLConnection connection = (HttpURLConnection) url.openConnection();
                connection.setDoInput(true);
                connection.connect();
                inputStream = connection.getInputStream();

                BitmapFactory.Options options = new BitmapFactory.Options();
                options.inPreferredConfig = Bitmap.Config.RGB_565;
                bitmap=BitmapFactory.decodeStream(inputStream,null,options);

            } catch (Exception e)
            {
                e.printStackTrace();
            }
            return bitmap;
        }

        @Override
        protected void onPostExecute(Bitmap bitmap) {
            super.onPostExecute(bitmap);

            if(imageView!=null)
            {
                imageView.setImageBitmap(bitmap);
                progressDialog.hide();
            }
            else {
                progressDialog.show();
            }
        }
    }


    //End of Async Class and Main Activity Class
}