public class LoadImage extends AsyncTask<String,Void,Bitmap>{
 
        ImageView imageView;
 
        public LoadImage(ImageView imageView){
            this.imageView=imageView;
        }
 
        @Override
        protected Bitmap doInBackground(String... params) {
 
            Bitmap bitmap=null;
 
            try {
 
                bitmap=BitmapFactory.decodeStream(new URL(params[0]).openConnection().getInputStream());
 
            } catch (IOException e) {
                e.printStackTrace();
            }
 
            return bitmap;
        }
 
        @Override
        protected void onPostExecute(Bitmap bitmap) {
            super.onPostExecute(bitmap);
 
            imageView.setImageBitmap(bitmap);
 
        }
    }
 

        @Override
        protected void onPostExecute(Bitmap bitmap) {
            super.onPostExecute(bitmap);
            ImageView imageView;
            imageView=(ImageView)findViewById(R.id.imageView);
            imageView.setImageBitmap(bitmap);
        }
 
// 可以不用Constructor 傳入ImageView 直接在onPostExecute 做
 
 
 

 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main_activity);
 
        String link="https://assets22.pokemon.com/assets/cms2/img/pokedex/full/010.png";
 
        imageView=(ImageView)findViewById(R.id.imageView);
        LoadImage loadImage=new LoadImage(imageView);
        loadImage.execute(link);
 
    }
 
 

 
 
  • Make a new Class extends AsyncTask
  • Define 你想傳入的東西在AsyncTask<>中
  • 第一個是傳入想處理的東西,第二是VOID?,第三是傳到onPostExecute 的Type
  • 在onCrearte 想傳入資料給AsyncTask 的話可自行弄個Constructor
  • params[0] 應該是Array 的意思,聽說可傳入多於一樣的東西,所以得一樣是[0]
  • doInBackground 的return 會傳給 onPostExecute
  • 中間是Void 如果不傳入的話,傳入的話會傳給 onProgressUpdate
  • AsyncTask.excute() 的東西傳給第一個<>
  • 最後就是在onCreate 自己 new 一個新的出來 excute 就行了
 
 
創作者介紹
創作者 Android Umi の 手機程式開發日記 的頭像
AndroidUmi

Android Umi の 手機程式開發日記

AndroidUmi 發表在 痞客邦 留言(0) 人氣( 4 )