[Android] 인텐트와 프로그레스바 사용하기
프로그레스 바를 사용해 보고 인텐트를 통해 화면 전환 동작을 수행하는 앱을 만들어 보자.
소스코드
더보기
// MainActivity
package kprogressbar;
import android.content.Intent;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.ProgressBar;
import android.widget.TextView;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import org.w3c.dom.Text;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
EditText setnumber = (EditText) findViewById(R.id.setnumber);
ProgressBar progress = (ProgressBar) findViewById(R.id.progress);
Button apply = (Button) findViewById(R.id.apply);
apply.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
if(Integer.parseInt(setnumber.getText().toString())>=0&&Integer.parseInt(setnumber.getText().toString())<=100){
TextView show = (TextView) findViewById(R.id.show);
show.setText(setnumber.getText().toString());
progress.setProgress(Integer.parseInt(setnumber.getText().toString()));
} else{
Intent wrongmessage = new Intent(getApplicationContext(), wrongmessage.class);
startActivity(wrongmessage);
}
}
});
Button reset = (Button) findViewById(R.id.reset);
reset.setOnClickListener(new View.OnClickListener(){
public void onClick(View v){
TextView show = (TextView) findViewById(R.id.show);
show.setText("0");
progress.setProgress(0);
}
});
}
}
// MainActivity XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" android:layout_marginTop="50dp" android:id="@+id/idname"
android:layout_marginLeft="40dp" android:layout_marginStart="40dp" android:layout_marginRight="40dp"
android:layout_marginEnd="40dp"/>
<TextView
android:text="0"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/show"
android:textSize="40sp"
app:layout_constraintTop_toBottomOf="@+id/progress" app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="40dp" android:layout_marginStart="40dp" android:layout_marginEnd="40dp"
android:layout_marginRight="40dp" app:layout_constraintEnd_toEndOf="parent"
android:layout_marginTop="40dp"/>
<Button
android:text="적용"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/apply"
app:layout_constraintEnd_toEndOf="parent" android:layout_marginRight="36dp"
android:layout_marginEnd="36dp" app:layout_constraintTop_toBottomOf="@+id/show"
android:layout_marginTop="140dp"/>
<Button
android:text="초기화"
android:layout_width="wrap_content"
android:layout_height="wrap_content" android:id="@+id/reset"
app:layout_constraintStart_toStartOf="parent"
android:layout_marginLeft="40dp" android:layout_marginStart="40dp" android:layout_marginEnd="40dp"
android:layout_marginRight="40dp" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintTop_toBottomOf="@+id/setnumber" android:layout_marginTop="40dp"/>
<ProgressBar
style="?android:attr/progressBarStyleHorizontal"
android:layout_width="350dp"
android:layout_height="wrap_content"
android:id="@+id/progress" app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent" app:layout_constraintTop_toBottomOf="@+id/idname"
android:layout_marginTop="40dp" android:layout_marginLeft="20dp" android:layout_marginStart="20dp"
android:layout_marginRight="20dp" android:layout_marginEnd="20dp"/>
<EditText
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:ems="10"
android:id="@+id/setnumber"
app:layout_constraintEnd_toStartOf="@+id/apply" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toBottomOf="@+id/show" android:layout_marginTop="140dp"
android:layout_marginLeft="40dp" android:layout_marginStart="40dp" android:layout_marginRight="40dp"
android:layout_marginEnd="40dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
// 오류창 XML
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".wrongmessage">
<TextView
android:text="잘못된 값을 입력하였습니다. 0~100 사이의 값을 입력하십시오."
android:layout_width="300dp"
android:layout_height="100dp" android:id="@+id/textView2"
app:layout_constraintEnd_toEndOf="parent" app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" app:layout_constraintBottom_toBottomOf="parent"
android:paddingLeft="20dp" android:paddingTop="20dp" android:paddingRight="20dp"
android:paddingBottom="20dp"/>
</androidx.constraintlayout.widget.ConstraintLayout>
//오류창 JAVA
package kr.ac.cnu.computer.progressbar;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
public class wrongmessage extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_wrongmessage);
}
}
//AndoridManifest XML
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="kr.ac.cnu.computer.progressbar">
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/Theme.Progressbar">
<activity android:name=".wrongmessage"
android:exported = "true"
android:label = "잘못된 접근"
android:theme = "@style/Theme.AppCompat.Dialog"
>
</activity>
<activity
android:name=".MainActivity"
android:exported="true">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
</activity>
</application>
</manifest>
<설명>
진행 상황을 표시하는 프로그레스바를 만들어 봤다.
화면 구성은 Constraint Layout으로 구성했다.
적절하지 않은 값을 입력하게 되면 Intent객체를 생성해 주의를 주는 대화상자를 표시하도록 했다.
각 버튼들에 대해 클릭 처리는 Onclicklistener를 구현해서 처리해 줬다.
적용 버튼을 눌렀을 때를 살펴보자.
EditText가 0~100 사이의 값으로 입력됐으면 입력된 수로 프로그레스바를 설정하고 텍스트뷰의 값도 그 값으로 설정했고, 입력값이 0~100 사이가 아니라면 Intent객체를 생성해 대화상자를 표시하도록 했다.
초기화 버튼에 대해 살펴보자.
초기화 버튼을 누르면 프로그레스 바와 텍스트뷰의 값을 0으로 설정하도록 했다.
대화상자는 Padding을 이용해 적절한 간격을 지정해 줬다.
'Mobile > Android' 카테고리의 다른 글
[Android] 쓰레드와 핸들러 (0) | 2021.11.12 |
---|---|
[Android] 서비스와 브로드캐스트 수신자 (0) | 2021.11.06 |
[Android] 여러 화면 간 전환 (0) | 2021.10.25 |
[Android] 대화상자 사용하기 (0) | 2021.10.18 |
[Android] 간단한 계산기 만들기 (0) | 2021.10.18 |
댓글
이 글 공유하기
다른 글
-
[Android] 쓰레드와 핸들러
[Android] 쓰레드와 핸들러
2021.11.12 -
[Android] 서비스와 브로드캐스트 수신자
[Android] 서비스와 브로드캐스트 수신자
2021.11.06 -
[Android] 여러 화면 간 전환
[Android] 여러 화면 간 전환
2021.10.25 -
[Android] 대화상자 사용하기
[Android] 대화상자 사용하기
2021.10.18