[DSC] 또 다른 위젯(Widget)과 그래들(Gradle)

2020. 5. 19. 18:09Android

[Android] - [DSC] 위젯(Widget) 익히기

 

[DSC] 위젯(Widget) 익히기

1. 위젯(Widget) 익히기 저번 주에는 TextView와 Button만 이용해봤었는데 이번에는 EditText, ImageView, ImageButton, CheckBox, RadioButton, CalendarView도 한 번 사용해보겠습니다. 우선 안드로이드 스튜디..

rina214.tistory.com

이전 포스트에 이어 또 다른 위젯도 알아보겠습니다.

 

스낵바(Snackbar)

Snackbar는 Toast 메시지와 비슷합니다.

일단 스낵바를 사용하기 위해서는 activity_main.xml 에서

이 버튼을 눌러주시면 Palette가 있을 겁니다. Palette에서

AppBarLayout을 다운로드 받아야 Snackbar를 사용가능 합니다.

 

그리고 버튼을 추가해줍니다.

 

activity_main.xml

<Button
    android:id="@+id/btn_sb"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="snackbar" />

 

MainActivity.java

Button btn_sb = findViewById(R.id.btn_sb);

btn_sb.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
    	Snackbar.make(v, "스낵바입니다.", Snackbar.LENGTH_SHORT).show();
    }
});

 

토스트 메시지를 띄우고 싶을 때는

Toast.makeText(MainActivity.this, "토스트 메시지입니다.", Toast.LENGTH_SHORT).show();

였는데 둘의 코드가 비슷함을 알 수 있습니다.

 

실행시켜보겠습니다.

 

알림 대화상자(Dialog)

사용자로부터 확인을 받거나 선택하게 할 때 사용합니다.

 

activity_main.xml

<Button
    android:id="@+id/btn_dialog"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="dialog"/>

 

MainActivity.java

Button btn_dialog = findViewById(R.id.btn_dialog);

btn_dialog.setOnClickListener(new View.OnClickListener() {
	@Override
	public void onClick(View v) {
		showMessage();
	}
});

버튼을 누르면 showMessage()라는 함수가 실행되게 하겠습니다.

그리고 showMessage()함수는 onCreate() 함수 바깥에 정의해주도록 하겠습니다.

 

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() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            String message = "예 버튼이 눌렸습니다.";
            Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
        }
    });

    builder.setNeutralButton("취소", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            String message = "취소 버튼이 눌렸습니다.";
            Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
        }
    });

    builder.setNegativeButton("아니오", new DialogInterface.OnClickListener() {
        @Override
        public void onClick(DialogInterface dialog, int which) {
            String message = "아니오 버튼이 눌렸습니다.";
            Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
        }
    });

     AlertDialog dialog = builder.create();
    dialog.show();
}

setTitle으로 제목, setMessage는 전달할 내용, setIcon으로 아이콘을 설정해줄 수 있습니다.

setPositiveButton, setNeutralButton, setNegativeButton 이렇게 총 3가지의 버튼이 있습니다.

코드와 같이 각각 예, 취소, 아니오 버튼이라고 생각하면 되고 그 버튼을을 눌렀을 때 실행할 내용을 onClick 함수 내에 코드를 작성해주시면 됩니다.

 

실행시키면 다음과 같이 나타나는 것을 확인할 수 있습니다.

 

프로그레스바(Progressbar)

작업의 진행 정도를 표시하거나 작업이 진행 중임을 사용자에게 알려줄 때 사용합니다.

 

막대 모양

 작업의 진행 정도를 알려줌

 

activity_main.xml

<ProgressBar
    android:id="@+id/progressBar"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    style="@style/Widget.AppCompat.ProgressBar.Horizontal"
    android:max="100"/>

 

MainActivity.java

ProgressBar progressBar = findViewById(R.id.progressBar);
progressBar.setProgress(80);

setProgress는 정수값을 받아 프로그레스바의 값으로 설정해줍니다.

activity_main.xml에서 max를 100으로 설정했으니 80으로 setProgress를 해주면 80%만큼 진행이 되었다라는 것을 표시할 수 있는 거예요!

 

 

 

원 모양

- 작업이 진행 중임을 알려줌, 반복적으로 표시됨

 

activity_main.xml

<Button
    android:id="@+id/btn_progress"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="progress"/>

 

MainActivity.java

Button btn_progress = findViewById(R.id.btn_progress);
btn_progress.setOnClickListener(new View.OnClickListener() {
	@Override
	public void onClick(View v) {
		ProgressDialog progressDialog = new ProgressDialog(MainActivity.this, android.R.style.Theme_DeviceDefault_Light_Dialog);
		progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
		progressDialog.setMessage("데이터를 확인하는 중입니다.");
		progressDialog.show();
	}
});

데이터를 받아올 때 약간의 시간이 걸릴 수 있습니다. 그럴 때 이 ProgressDialog를 이용하시면 좋습니다.

ProgressDialog를 끝낼 때는 progressDialog.dismiss()라고 쓰시면 됩니다.

 

실행해보면 다음과 같은 화면을 보실 수 있습니다.

 

시크바(SeekBar)

SeekBar는 어떤 기능인지 확인만 하고 넘어가겠습니다.

 

activity_main.xml

<SeekBar
    android:layout_width="match_parent"
    android:layout_height="wrap_content" />

 

 


리소스(Resource)와 매니페스트(Manifest)

안드로이드 앱은 크게 자바코드와 리소스로 구성됩니다.

자바코드는 앱의 흐름과 기능을 정의하고

리소스는 레이아웃이나 이미지처럼 사용자에게 보여주기 위해 사용하는 파일이나 데이터를 관리합니다.

 

매니페스트는 리소스는 아니지만 설치된 앱의 구성요소, 권한 등을 시스템에 알려줍니다.

가장 상위 폴더에 매니페스트 파일이 있습니다.

label 값을 바꾸면 앱의 이름이 바뀌고

icon, roundIcon 을 바꾸면 앱의 아이콘이 바뀝니다.

 

리소스를 자바 코드와 분리하는 이유는 이해하기 쉽고 유지관리가 용이하기 때문입니다.

 

그래들(Gradle)

안드로이드 앱을 실행하거나 플레이스토어, 앱스토어에 올릴 때는 소스 파일이나 리소스 파일을 빌드하거나 배포하는 작업이 필요합니다. 이때 사용되는 것이 그래들(Gradle)입니다.

 

빌드 설정은 build.gradle 파일에 넣어 관리합니다.

프로젝트 수준과 모듈 수준으로 나뉘는데

프로젝트 수준은 classpath를 추가하는 정도 말고는 수정하는 경우가 드뭅니다.

 

모듈 수준은 빌드에 필요한 중요한 정보들이 들어있습니다.

 - applicationId : 이 앱의 id 값으로 전 세게에서 유일한 값이어야 합니다.

 - compileSdkVersion : 빌드를 진행할 때 어떤 버전의 SDK를 사용할건지 선택합니다. 보통은 최신버전을 사용합니다.

 - minSdkVersion : 어떤 하위 버전까지 지원할지 지정합니다. 모든 단말을 지원하면 좋겠지만 특정 버전 이하에서는 사용하지 못하는 기능이 있기 때문에 지정해줘야 합니다.

 - dependencies : 외부 라이브러리를 추가할 때 사용합니다.

 

settings.gradle에서는 어떤 모듈을 포함할건지에 대한 정보를 포함합니다.

 

나머지 그래들에서는 안드로이드 스튜디오에서 자동 설정해주는 경우가 많아서 몰라도 괜찮습니다 :)