일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- php
- spring boot
- 사용법
- 연동
- 비밀번호
- 카카오톡
- spring
- mysql
- centos7
- div
- ViewPager
- Oracle
- 강의
- 하이브리드
- radiobutton
- ImageView
- SERVLET
- hybrid app
- Android
- db
- CUSTOM
- Java
- html
- Typescript
- 인텐트
- 개발 방법론
- 하이브리드 앱
- Firebase
- 안드로이드
- CSS
- Today
- Total
유혁의 개발 스토리
[Android] 안드로이드 버튼을 이용한 간단한 어플리케이션 만들기 본문
안녕하세요.
이번시간은 버튼 이용해 간단한 어플리케이션을 구현하겠습니다.
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 생성 및 실행방법은 지난시간에 했으므로
부족하시면 지난시간을 참조하시기 바랍니다.
이번기회로 안드로이드가 조금 친숙해 지셨나요?
흥미를 느끼셨으면 앞으로 안드로이드 개발이 재미가 있을 거라생각합니다.^^
감사합니다.
잘못된 점 지적은 환영하며
궁금하신 점은 댓글로 남겨주시면 답변드리겠습니다.
'Android' 카테고리의 다른 글
[Hybrid App] 웹앱, 네이티브앱, 하이브리드 앱 (0) | 2017.06.27 |
---|---|
[Android] 안드로이드 레이아웃 둘러보기 (1) | 2017.06.27 |
[Android] 안드로이드 AVD 생성 및 어플리케이션 테스트 (0) | 2017.06.26 |
[Android] 안드로이드 - PHP - Mysql 연동 (APMSETUP) (10) | 2017.06.24 |
안드로이드 - PHP - MYSQL (포트포워딩이란) (0) | 2017.06.24 |