안드로이드 토스트, 구글 접속하기, 전화 키패드 띄우기 기능 구현
- 프로그래밍/안드로이드
- 2020. 3. 11. 01:32
안드로이드의 레이아웃과 위젯에 대한 설명 전에 간단하게 버튼을 이용해 토스트 띄우기, 구글 접속하기, 전화 키패드 띄우기에 대해 해 보겠습니다. 레이아웃과 위젯에 관련된 내용은 다음 포스팅부터 할 예정입니다. 안드로이드 플랫폼으로 이런 것들도 할 수 있구나 정도로 알고 넘어가면 될 것 같습니다.
새로운 프로젝트 하나를 만들고 시작하겠습니다. 프로젝트 생성을 할 줄 모르시는 분은 아래 포스팅을 참고하여 생성을 하시면 됩니다.
| 레이아웃 구성
자바 코드 입력에 앞서 화면 배치를 먼저 하도록 하겠습니다.
아래는 레이아웃 코드입니다.
<?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:orientation="vertical"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<Button
android:id="@+id/btn_toast"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="토스트"/>
<Button
android:id="@+id/btn_google"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="구글 접속하기"/>
<Button
android:id="@+id/btn_tel"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="전화걸기"/>
</LinearLayout>
LinearLayout과 Button에 대해 아주 간략히 설명하자면 LinearLayout은 Layout의 한 종류이고, orientation 속성을 이용해 Button 위젯을 세로로 배치하겠다는 것입니다. Button은 위젯의 한 종류이고, 말 그대로 클릭할 수 있는 버튼입니다. 각각의 버튼 위에 토스트, 구글 접속하기, 전화 걸기라는 텍스트가 뜨도록 해주었습니다. 그리고 각각의 Button에 id라는 속성을 이용해 이름을 부여해주었습니다. 더욱 자세한 내용은 다음 포스팅에서 하도록 하겠습니다.
위와 같이 레이아웃 구성을 하고, 자바 코드를 짜도록 하겠습니다.
| 토스트 띄우기
우선 토스트라고 쓰인 버튼을 클릭하면 토스트를 띄우는 것을 해보겠습니다. 여기서 토스트란 잠깐 떴다가 사라지는 창을 의미합니다. 어플을 사용하다 보면 "확인되었습니다.", "완료되었습니다." 등 어떤 버튼을 클릭했을 때 화면 아래쪽에 일시적으로 떴다가 사라지는 것을 종종 볼 수 있습니다. 그 기능을 구현해보도록 하겠습니다.
아래는 토스트를 띄우기 위한 자바 코드입니다.
package com.example.secondapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_toast = findViewById(R.id.btn_toast);
btn_toast.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Toast.makeText(MainActivity.this,"버튼이 눌렸습니다.",Toast.LENGTH_SHORT).show();
}
});
}
}
간단하게 코드의 흐름을 설명하겠습니다.
1. 앱이 실행되면 스마트 폰의 화면에는 Activity가 띄워집니다. 그리고 onCreate 함수가 호출됩니다.
2. onCreate가 호출되면 setContentView 함수를 이용해서 activity_main.xml의 화면을 배치하겠다는 것을 알립니다. 즉 R.layout.activity_main의 화면 설계대로 스마트 폰에 띄울 수 있게 해 달라는 의미입니다.
3. findViewById는 View를 얻어올 때 이용하는 함수입니다. 기본적으로 위젯은 View를 상속받고 있습니다. 위에서 레이아웃을 구성할 때 Button에 입력했던 id를 이용해서 View를 찾아오겠다는 의미입니다.
4. (button).setOnClickListener(new View.OnClickListener() : (button)에 지정한 버튼이 눌리면 Override 되어있는 onClick 함수를 실행하겠다는 의미입니다.
5. Toast.makeText(Context, 보여주고 싶은 메시지, 얼마나 오랫동안 메시지를 보여줄지). show() : 토스트를 사용하는 방법입니다. Context에는 activity가 들어갈 수 있는데 activity는 context를 상속받고 있기 때문입니다. 메시지를 띄워주는 시간은 Toast.LENGTH_SHORT와 Toast.LENGTH_LONG 이렇게 두 가지가 있습니다. 앞의 것은 2초, 뒤의 것은 3.5초 동안 띄워줍니다.
* View.OnClickListener() 자동완성을 했지만 Override 함수가 나타나지 않을 때
코드를 입력하다 보면 자동완성과 동시에 종종 Override 되어야 하는 함수가 뜨지 않는 경우가 있습니다. 그럴 때에는 Ctrl+o를 누르면 아래의 창이 뜨게 됩니다.
그리고 위와 같이 Override 해주어야 하는 함수를 선택하고 OK 버튼을 누르면 알아서 Override 함수가 생성될 것입니다.
* Button이나 Intent 등 클래스에 빨간색 밑줄이 뜰 때
빨간줄이 뜨는 클래스를 클릭하고, Alt + Enter를 누르면 import 할 수 있습니다.
위의 코드를 실행한 결과입니다. Button 3개가 세로로 배치되어 있는 것을 볼 수 있고, 각각의 버튼에는 Button의 text 속성에 넣어준 내용이 들어가 있습니다. 토스트 버튼을 클릭한 결과 화면 아래에 "버튼이 눌렸습니다."라는 문구를 확인할 수 있습니다.
| 구글 접속하기
다음으로는 버튼을 누르면 구글에 접속하도록 해보겠습니다.
아래는 구글에 접속하기 위한 자바 코드입니다.
package com.example.secondapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_google = findViewById(R.id.btn_google);
btn_google.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com"));
startActivity(intent);
}
});
}
}
토스트를 띄워주는 코드와 다른 부분만 설명하겠습니다.
1. new Intent(Intent.ACTION_VIEW, Uri.parse("http://www.google.com")) : Intent란 간단하게 설명하면 activity와 service, receiver와 같은 컴포넌트를 구동할 때 사용하는 것을 말합니다. Intent와 관련된 내용은 상당히 많아서 뒤로 갈수록 하나씩 포스팅하게 될 것입니다. 여기서는 Intent.ACTION_VIEW와 Uri.parse(URL)을 통해서 어떤 사이트를 보고 싶다는 의미가 됩니다.
2. startActivity(intent) : 위의 일을 할 수 있는 intent를 startActivity를 통해 구동하는 것입니다.
위의 코드를 실행시킨 결과입니다.
구글 접속하기 버튼을 클릭한 결과 크롬 브라우저를 이용하여 구글에 접속한 것을 확인할 수 있습니다.
| 전화 키패드 띄우기
마지막으로 전화 키패드를 띄워보겠습니다.
아래는 전화 키패드를 띄우는 자바 코드입니다.
package com.example.secondapplication;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.net.Uri;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;
import android.widget.TextView;
import android.widget.Toast;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button btn_google = findViewById(R.id.btn_google);
btn_google.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v) {
Intent intent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:010-1234-5678"));
startActivity(intent);
}
});
}
}
구글에 접속하는 코드와 거의 유사합니다. 단지 Uri.parse 부분이 tel : 010-1234-5678로 되어있는데 먼저 실행 결과를 확인해보겠습니다.
코드 실행 후 전화 걸기 버튼을 클릭해보니 전화 키패드가 뜨는 것을 확인할 수 있습니다. 그리고 내가 입력하지 않았는데 01012345678이 입력되어있습니다. 즉 위의 Uri.parse의 괄호 안에 넣어주었던 번호가 떠 있는 것을 확인할 수 있습니다.
여기까지 안드로이드의 간단한 기능 3가지를 구현해보았습니다.
* SK 플래닛의 안드로이드 강의를 참고해서 작성하는 포스팅입니다. 공부를 하면서 기록하는 내용이다 보니 틀린 내용이 있을 수도 있습니다. 틀린 부분이 있다면 댓글로 알려주시면 감사드리겠습니다. *
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 view, viewgroup (0) | 2020.04.26 |
---|---|
안드로이드 인텐트(intent) 엑티비티 전환 기능 구현 (0) | 2020.03.12 |
안드로이드 다국어 지원 방법 (0) | 2020.03.10 |
안드로이드 프로젝트 생성 (0) | 2020.03.04 |
안드로이드 스튜디오 설치 (0) | 2020.02.25 |
이 글을 공유하기