출처 : Do it! 안드로이드 앱 프로그래밍 / 정재곤
토스트
토스트는 간단한 메시지를 잠깐 보여주었다가 없어지는 뷰로 앱 위에 떠 있는 뷰라고 할 수 있다. 토스트 메시지를 만들어서 보여주는 방법은 다음과 같다.
Toast.makeText(Context context, String message, int duration).show();
토스트는 위치나 모양을 바꿀 수 있는데 다음의 두 메소드로 토스트의 위치와 여백을 지정할 수 있다.
public void setGravity(int gravity, int xOffset, int yOffset)
public void setMargin(float horizontalMargin, float verticalMargin)
> 토스트 위치 바꿔주기 예제
public class MainActivity extends AppCompatActivity {
EditText editText;
EditText editText2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
editText = findViewById(R.id.editText);
editText2 = findViewById(R.id.editText2);
}
public void onButton1Clicked(View view){
try {
Toast toastView = Toast.makeText(this, "위치가 바뀐 토스트 메시지입니다.", Toast.LENGTH_LONG);
int xOffset = Integer.parseInt(editText.getText().toString());
int yOffset = Integer.parseInt(editText2.getText().toString());
toastView.setGravity(Gravity.TOP | Gravity.TOP, xOffset, yOffset);
toastView.show();
} catch (NumberFormatException e) {
e.printStackTrace();
}
}
}
이 외에도 셰이프 드로어블을 사용해 토스트의 모양을 바꿔줄 수도 있다.
스낵바
간단한 메시지를 보여줄 때 토스트 대신 스낵바를 사용하기도 한다. 스낵바는 외부 라이브러리로 추가되었기 때문에 스낵바가 들어 있는 디자인 라이브러리를 추가해줘야 한다.
외부 라이브러리를 추가하려면 안드로이드 스튜디오 창 상단의 File -> Project Structure를 누른다. 오른쪽의 탭들 중에서 Dependencies를 누른 후 + 버튼을 눌러 Library Dependency 메뉴를 선택한다.
라이브러리 항목들이 보이면 com.android.support:design 항목을 찾아 선택한다.
이제 스낵바 관련 라이브러리를 사용할 수 있다.
public void onButton2Clicked(View view){
Snackbar.make(view, "snack", Snackbar.LENGTH_LONG).show();
}
알림 대화상자
알림 대화상자는 사용자에게 확인을 받거나 선택하게 할 때 사용한다.
public class MainActivity extends AppCompatActivity {
TextView textView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
textView = findViewById(R.id.textView);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
showMessage();
}
});
}
private void showMessage() {
AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setTitle("안내");
builder.setMessage("종료하시겠습니까?");
builder.setIcon(android.R.drawable.ic_dialog_alert);
builder.setPositiveButton("예", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String message = "예 버튼이 눌렸습니다. ";
textView.setText(message);
}
});
builder.setNeutralButton("취소", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String message = "취소 버튼이 눌렸습니다. ";
textView.setText(message);
}
});
builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
String message = "아니오 버튼이 눌렸습니다. ";
textView.setText(message);
}
});
AlertDialog dialog = builder.create();
dialog.show();
}
}
프로그레스바 사용하기
어떤 일의 진행 상태를 중간 중간 보여줄 수 있는 가장 좋은 방법 중 하나가 프로그레스바이다. 프로그레스바의 형태는 두 가지가 있다.
속성 | 설명 |
막대 모양 | 작업의 진행 정도를 알려줄 수 있도록 막대 모양으로 표시한다. |
원 모양 | 작업이 진행 중임을 알려준다. 원 모양으로 된 프로그레스바가 반복적으로 표시된다. |
자바 코드에서 프로그레스바의 현재 값을 바꿀 때 사용하는 대포적인 메소드들은 다음과 같다.
void setProgress(int progress)
void incrementProgressBy(int diff)
setProgress 메소드는 정수 값을 받아 프로그레스바의 현재 값으로 설정한다. incrementProgressBy 메소드는 현재 설정되어 있는 값을 기준으로 값을 더하거나 뺄 때 사용한다.
> 프로그레스바 예시
public class MainActivity extends AppCompatActivity {
ProgressDialog dialog;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_test);
ProgressBar progressBar = findViewById(R.id.progressBar);
progressBar.setIndeterminate(false);
progressBar.setProgress(80);
Button button = findViewById(R.id.button);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
dialog = new ProgressDialog(MainActivity.this);
dialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
dialog.setMessage("데이터를 확인하는 중입니다.");
dialog.show();
}
});
Button button2 = findViewById(R.id.button2);
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if (dialog != null) {
dialog.dismiss();
}
}
});
}
}
'Android' 카테고리의 다른 글
[Android] 안드로이드 정리 (6) - 여러 화면 만들고 화면 간 전환하기 (0) | 2020.03.12 |
---|---|
[Android] 안드로이드 정리 (5) - 레이아웃 인플레이션 이해하기 (0) | 2020.03.12 |
[Android] 안드로이드 정리 (3) - 이벤트 처리 (0) | 2020.03.11 |
[Android] 안드로이드 정리 (2) - 기본 위젯과 드로어블 (0) | 2020.03.11 |
[Android] 안드로이드 정리 (1) - 레이아웃 (0) | 2020.03.11 |