实验代码(未修改)
xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".AsyncTask1">
<LinearLayout
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<ImageView
android:id="@+id/img01"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp">
</ImageView>
<Button
android:id="@+id/btn_dl"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_margin="20dp"
android:text="点击下载图片">
</Button>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_margin="20dp">
<Button
android:id="@+id/left_hand"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:layout_margin="20dp"
android:text="左手">
</Button>
<Button
android:id="@+id/right_hand"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:layout_margin="20dp"
android:text="右手">
</Button>
</LinearLayout>
<LinearLayout
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_margin="20dp">
<Button
android:id="@+id/left_foot"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:layout_margin="20dp"
android:text="左脚">
</Button>
<Button
android:id="@+id/right_foot"
android:layout_width="80dp"
android:layout_height="80dp"
android:layout_gravity="center"
android:layout_margin="20dp"
android:text="右脚">
</Button>
</LinearLayout>
</LinearLayout>
</androidx.constraintlayout.widget.ConstraintLayout>
java
package com.kk.laodi;
import androidx.appcompat.app.AppCompatActivity;
import android.app.ProgressDialog;
import android.graphics.Bitmap;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;
public class AsyncTask1 extends AppCompatActivity {
private Button btn_dl, right_hand, left_hand, right_foot, left_foot;
private ImageView img01;
private String image_path = "https://img.lianzhixiu.com/uploads/allimg/202104/9999/7490b1acfa.jpg";
private ProgressDialog dialog;
private MyTask myTask;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_async_task1);
btn_dl = (Button)this.findViewById(R.id.btn_dl);
right_hand = (Button)this.findViewById(R.id.right_hand);
right_foot = (Button)this.findViewById(R.id.right_foot);
left_hand = (Button)this.findViewById(R.id.left_hand);
left_foot = (Button)this.findViewById(R.id.left_foot) ;
img01 = (ImageView)this.findViewById(R.id.img01);
dialog = new ProgressDialog(this);
dialog.setTitle("提示");
dialog.setMessage("正在下载,请稍后...");
dialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
btn_dl.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(myTask != null && !myTask.isCancelled()) {
return;
}
myTask = new MyTask();
myTask.execute(image_path);
}
});
left_hand.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
if(myTask !=null && myTask.getStatus() == AsyncTask.Status.RUNNING){
myTask.cancel(true);
}
}
});
}
public class MyTask extends AsyncTask<String, Integer, Bitmap>{
@Override
protected void onPreExecute() {
super.onPreExecute();
}
@Override
protected void onProgressUpdate(Integer... values) {
super.onProgressUpdate(values);
if(isCancelled()){
return;
}
switch (values[0]) {
case 1:
left_foot.setText("点我");
break;
case 2:
left_hand.setText("点我");
break;
case 3:
right_foot.setText("点我");
break;
case 4:
right_hand.setText("点我");
break;
case 5:
left_foot.setText("左脚");
break;
case 6:
left_hand.setText("左手");
break;
case 7:
right_foot.setText("右脚");
break;
case 8:
right_hand.setText("右手");
break;
}
}
@Override
protected Bitmap doInBackground(String... params) {
int i = 0;
while(i <= 100){
if(isCancelled()){
break;
}
publishProgress(i);
i = i % 8;
delay_ms(2000);
publishProgress(i);
i++;
}
return null;
}
@Override
protected void onPostExecute(Bitmap result) {
super.onPostExecute(result);
dialog.dismiss();
img01.setImageBitmap(result);
}
}
public void delay_ms(int t) {
try
{
Thread.currentThread().sleep(t);
}
catch(Exception e){
}
}
}