본문 바로가기
Android

[Android] 안드로이드 버튼을 이용한 간단한 어플리케이션 만들기

by 유혁. 2017. 6. 26.


안녕하세요.


이번시간은 버튼 이용해 간단한 어플리케이션을 구현하겠습니다.




1. 안드로이드 스튜디오 프로젝트를 생성


저는 4th_Study라고 생성하겠습니다. (잘 모르면 지난시간 참고)




 

2. 빨간 네모칸에 소스를 작성합니다.






MainActivity.java


import android.content.Intent;
import android.net.Uri;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;

public class MainActivity extends AppCompatActivity {
Button button1;
Button button2;
Button button3;
Button button4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main); //R 은 리소스 아래 layout 에 activitymain 이 있다
button1=(Button) findViewById(R.id.button1); //리소스에 있다 button1
button2=(Button) findViewById(R.id.button2); //리소스에 있다 button1
button3=(Button) findViewById(R.id.button3); //리소스에 있다 button1
button4=(Button) findViewById(R.id.button4); //리소스에 있다 button1

//버튼 1에 대한 이벤트를 설정한다
button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
//인텐트 아직 배우지 않았다. 하지만 꼭 필요한 부분이다. 메인 페이지에서 다른 페이지생성 및 전환이 필요할때 사용하는 객체이다.
Intent mIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("http://m.nate.com")); //Uri 를 이용하여 웹브라우저를 통해 웹페이지로 이동하는 기능
startActivity((mIntent));
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
Intent mIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("tel:/911")); //tel : 은 911번호 전화번호를 세팅하여 통화버튼을 누르면 바로 통화가 가능하다.
startActivity((mIntent));
}
});
button3.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
Intent mIntent = new Intent(Intent.ACTION_VIEW, Uri.parse("content://media/internal/images/media")); //저장되어있는 스토리지에 미디어폴더로 접근하여 겔러리를 보여준다.
startActivity((mIntent));
}
});
button4.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
finish(); //finish() 현재 엑티비티(화면)을 종료하는 메소드이다.
}
});
}
}

주석 참고하시면 됩니다.


 


 

activity_main.xml

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:text="@string/strBtn1"
android:background="#ff0000"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:text="@string/strBtn2"
android:background="#00ff00"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button3"
android:text="@string/strBtn3"
android:background="#ff00ff"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button4"
android:text="@string/strBtn4"
android:background="#00ffff"/>
</LinearLayout>

 


 

values.string.xml

<resources>
<string name="app_name">My Application</string>
<string name="action_settings">Settings</string>
<string name="strBtn1">네이트 홈페이지 열기</string>
<string name="strBtn2">911 응급전화 걸기</string>
<string name="strBtn3">갤러리 열기</string>
<string name="strBtn4">끝내기</string>
</resources>


MainActivity.java 에서는 안드로이드 어플리케이션의 동작과 기능을 구현하는 공간입니다.

layout에 xml 에서는 안드로이드 어플리케이션의 VIew 를 꾸며주는 공간입니다.

string.xml 에서는 안드로이드에서 사용될 문자열들을 정리해 놓은 공간입니다.


string.xml을 사용하는 이유는 유지보수의 편의성 때문에 문자열들을 따로 관리하는 공간입니다.


 

 

 

-----------------------------------------------------------------------------------------------------------------

 

3. 자세한 소스설명


 

프로그램을 조금 이해하시는 분들이라면 자세하게 설명 안해도 이해하실수 있는 부분입니다.

 

처음 접하시는분들을 위해 상세하게 설명하겠습니다. (이해되시는 분들은 패스)

 

 

 

 

- MainActivity.java -

setContentView(R.layout.activity_main); //R 은 리소스 아래 layout 에 activitymain 이 있다

R.layout.activity_main 이란 activity_main xml 을 불러온다는 의미이며

 

MainActivity 가 실행될때 기반이 되는 View는 activity_main입니다.

button1=(Button) findViewById(R.id.button1); //리소스에 있다 button1

Button 객체의 button1이라는 변수를 선언하고 findViewById를 통해 activity에 선언되있는 id값 button1을 초기화 해줍니다.

 

activity_main에서 id값이 button1인 버튼은 이제 button1 값으로

java에서 사용 가능하게 됩니다.

 

예를들어 button1이 클릭되었을때 Toast 이벤트를 주고싶으면

 

button1.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v){
Toast.makeText(MainActivity.this, "Button1이 눌렸습니다.", Toast.LENGTH_SHORT).show();
}
});

이렇게 사용이 가능합니다.
 



- activitiy_main.xml -

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:text="@string/strBtn1"
android:background="#ff0000"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button2"
android:text="@string/strBtn2"
android:background="#00ff00"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button3"
android:text="@string/strBtn3"
android:background="#ff00ff"/>
<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button4"
android:text="@string/strBtn4"
android:background="#00ffff"/>
</LinearLayout>

간단한게 보면

 

<LinearLayout>

 

<Button>

 

</Button>

 

</LinearLayout>

리니어 레이아웃 안에 버튼이 4개 들어가있는 형태입니다.

 

Linear : 직선의

 

Button을 직선으로 배치하겠다는 의미입니다.

 

android:layout_width="match_parent"

레이아웃 가로를 부모의 크기를 가져다 쓰겠다는 의미입니다.

 

버튼의 layout_width가 match_parent라면

상위 LinearLayout의 width 값을 가져다 쓰겠다는 것입니다.

 

예를들어 LinearLayout의 width가 300dp 이고

버튼의 width가 match_parent라면 버튼의 width 값은 얼마일까요?

 

300dp 겠죠? 쉽죠?

LinearLayout에는 일직선으로 배치하기에 orientation 을 설정해주어야합니다.

가로일직선인지 세로일직선인지

horizental / vertical 설정입니다.

 

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:text="@string/strBtn1"
android:background="#ff0000"/>

android:id="@+id/button1"

 

@+id는 고정이며 / 이후에 나온 변수가 java에서 findViewById 값으로

가져올 수 있는 id값입니다.

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

xml의 버튼을 java에서 변수에 할당하여 사용합니다.

 

 

 

 

 

 

values.strings.xml 에 

<resources>
<string name="app_name">My Application</string>
<string name="action_settings">Settings</string>
<string name="strBtn1">네이트 홈페이지 열기</string>
<string name="strBtn2">911 응급전화 걸기</string>
<string name="strBtn3">갤러리 열기</string>
<string name="strBtn4">끝내기</string>
</resources>
<string name="strBtn1">네이트 홈페이지 열기</string>

string name strBtn1 의 값을

 

button의 텍스트로 넣어주기위해 사용합니다.

 

 

<Button
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:id="@+id/button1"
android:text="@string/strBtn1"
android:background="#ff0000"/>

android:text 버튼에 텍스트 입력

background 배경색 지정



 

 

 

 

 

 

4. AVD 실행하여 소스 빌드

 

 

AVD 생성 및 실행방법은 지난시간에 했으므로

 

부족하시면 지난시간을 참조하시기 바랍니다.

 

 

 

 

 

 

이번기회로 안드로이드가 조금 친숙해 지셨나요?

 

흥미를 느끼셨으면 앞으로 안드로이드 개발이 재미가 있을 거라생각합니다.^^

 

감사합니다.

 

 

 

잘못된 점 지적은 환영하며

 

궁금하신 점은 댓글로 남겨주시면 답변드리겠습니다.