728x90
정답이 아닐 수 있습니다. 오류가 있으면 알려주세요ㅎ
1. 2번 메인 스레드
2. 3번 네트워크 접근
3. 2번 run()
4. 3번 실행 오류가 발생한다.
5. 1번 post()
6. 2번 doInBackground()
7.
activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout 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"
android:orientation="vertical"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/text"
android:text="00:00:00"
android:textStyle="bold"
android:textSize="70dp"
android:layout_gravity="center"
android:layout_marginTop="200dp"/>
<LinearLayout
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal"
android:layout_marginTop="50dp"
android:gravity="center">
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/start"
android:text="타이머 시작"
android:layout_margin="5dp"
android:backgroundTint="#6600CC"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/stop"
android:text="타이머 중지"
android:layout_margin="5dp"
android:backgroundTint="#FF0066"/>
<Button
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/reset"
android:text="타이머 리셋"
android:layout_margin="5dp"
android:backgroundTint="#339999"/>
</LinearLayout>
</LinearLayout>
MainActivity.java
package kr.co.company.ch13;
import androidx.appcompat.app.AppCompatActivity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
Thread w;
boolean running = false;
private int i = 0, mSec, sec, min;
private Button start, stop, reset;
private TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
textView = findViewById(R.id.text);
start = findViewById(R.id.start);
start.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (running == false) {
running = true;
new StopWatch().execute(0);
}
}
});
stop = findViewById(R.id.stop);
stop.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
running = false;
}
});
reset = findViewById(R.id.reset);
reset.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
i = 0;
textView.setText("00:00:00");
}
});
}
class StopWatch extends AsyncTask<Integer, Integer, Integer> {
@Override
protected void onPreExecute() {
}
@Override
protected Integer doInBackground(Integer... value) {
while (running) {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
i++;
publishProgress(0);
}
return 0;
}
@Override
protected void onProgressUpdate(Integer... value) {
mSec = i % 100;
sec = (i / 100) % 60;
min = (i / 100) / 60;
textView.setText(String.format("%02d:%02d:%02d", min, sec, mSec));
}
@Override
protected void onPostExecute(Integer value) {
}
}
}
결과
728x90
'Android > 그림으로 쉽게 설명하는 안드로이드 프로그래밍 개정6판' 카테고리의 다른 글
그림으로 쉽게 설명하는 안드로이드 프로그래밍(개정6판) 연습문제 14장 (0) | 2022.12.22 |
---|---|
그림으로 쉽게 설명하는 안드로이드 프로그래밍(개정6판) 연습문제 12장 (2) | 2022.12.03 |
그림으로 쉽게 설명하는 안드로이드 프로그래밍(개정6판) 연습문제 11장 (0) | 2022.12.03 |
그림으로 쉽게 설명하는 안드로이드 프로그래밍(개정6판) 연습문제 9장 (0) | 2022.11.30 |
그림으로 쉽게 설명하는 안드로이드 프로그래밍(개정6판) 연습문제 8장 (0) | 2022.11.23 |
댓글