LoginSignup
1
3

More than 5 years have passed since last update.

HTTPのGETでDataを取得して、Progressバーを表示する

Posted at
AndroidManifest.xml
<uses-permission android:name="android.permission.INTERNET"/>
AndroidManifest.xml
 <ProgressBar
        style="?android:attr/progressBarStyleLarge"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:id="@+id/progress"
        android:max="100"
        android:visibility="gone"
        />
    <Button
        android:layout_marginTop="50dp"
        android:id="@+id/btn"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:onClick="btn_onClick"
        android:text="キャンセル"
        />

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:id="@+id/txtResult"/>
MainActivity.java
public class MainActivity extends AppCompatActivity {
    AsyncNetworkTask task;

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

        task = new AsyncNetworkTask(this);
        task.execute("http://www.wings.msn.to/");
    }

    public void btn_onClick(View view){
        task.cancel(true);
    }
}
AsyncNetworkTask.java
public class AsyncNetworkTask extends AsyncTask<String, Integer, String>{
    private TextView txtResult;
    private ProgressBar progress;

    public AsyncNetworkTask(Context context){
        super();
        MainActivity activity = (MainActivity)context;
        txtResult = (TextView)activity.findViewById(R.id.txtResult);
        progress = (ProgressBar)activity.findViewById(R.id.progress);
    }

    @Override
    protected void onPreExecute() {
        progress.setVisibility(ProgressBar.VISIBLE);
    }

    @Override
    protected String doInBackground(String... params) {
        publishProgress(30);
        SystemClock.sleep(3000);
        publishProgress(60);
        StringBuilder builder = new StringBuilder();

        try {
            URL url = new URL(params[0]);
            HttpURLConnection con = (HttpURLConnection) url.openConnection();
            con.setRequestMethod("GET");
            BufferedReader reader = new BufferedReader(
                    new InputStreamReader(con.getInputStream(), "Shift-JIS"));
            String line;
            while((line = reader.readLine()) != null) {
                builder.append(line);
            }


        } catch (IOException e) {
            e.printStackTrace();
        }

        publishProgress(100);
        return builder.toString();
    }

    @Override
    protected void onProgressUpdate(Integer... values) {
        Log.d("url", values[0].toString());
    }

    @Override
    protected void onPostExecute(String s) {
        txtResult.setText(s);
        progress.setVisibility(ProgressBar.GONE);
    }

    @Override
    protected void onCancelled() {
        txtResult.setText("キャンセルされました");
        progress.setVisibility(ProgressBar.GONE);
    }
}
1
3
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
3