• 1나루토매니아
  • 2뱅이
  • 3푸타코타
  • 4완벽그자체
  • 5해삼
  • 1뱅이
  • 2나루토매니아
  • 3알짜배기
  • 4뱅이
  • 5빙그레우유
안드로이드 강좌 6 - Java 코드(Code)에서 뷰(View) 다루기
연속출석 :
1일 랭킹 : 399위 중장7
45%
45% (1541 /3455)
  • 댓글 0 |
  • 추천 0 |
  • 조회 2960 |
  • 2012-08-09 (목) 16:32
    이번 Android 강좌에서는 Java 코드에서 View를 다루는 방법을 알아보겠습니다. 화면에 표시한 TextView, Button등의 View를 어떻게 Java Code에서 접근할 수 있는지 알아보고 일부 함수들에 대해서도 설명 하겠습니다. 기본 강좌는 여기까지가 될 것 같습니다. Q&A에서 질문하시는 것 위주로 정리하고 어느 정도 정리가 되면 다음 강좌를 진행하도록 하겠습니다.

    안드로이드 강좌 6 - Java 코드(Code)에서 뷰(View) 다루기
    id
    어플리케이션 실행 시에 Layout XML에서 정해진데로 View와 Layout들이 생성되고 보여집니다. 생성된 View들에서 코드상에서 동적으로 변경해야 하는 값들이 있다면, 변경해야할 View를 코드 상에서 불러오기 위해 먼저 XMl파일에서 id를 지정해야 합니다.
    1.<TextView
    2. android:id="@+id/text"
    3. android:layout_width="fill_parent"
    4. android:layout_height="wrap_content"
    5. />

    id 값은 같은 XML파일 안에서 유일하게 사용되어야 자바 코드에서 제대로 View를 가져 올 수가 있습니다.

    Code
    XML파일을 고쳐서 새로운 id를 추가하면 자동으로 R.java 파일이 자동으로 생성됩니다. 지정한 id가 R.id.text라는 상수로 들어가 있는 것을 확인할 수 있습니다. 이전에 말씀드렸듯이 R.java는 직접 고쳐서는 안됩니다. 만약 상수값이 제대로 들어가 있지 않은 겨우 XML파일을 다시 저장한다던지, 프로젝트를 refresh한다던지 해서 R.java가 자동으로 생성되게 하면 됩니다.

    1.TextView t = (TextView)findViewById(R.id.text);
    2.t.setText("Hello");
    3.t.setBackgroundColor(0xFFFF0000);
    4.t.setGravity(Gravity.LEFT);

    위 코드를 setContentView한수 호출 후에 넣어주도록 합니다. setContentView에서 레이아웃 XML파일을 불러서 실제 View 객체들을 생성합니다. 그 다음 findViewById함수를 통해 생성한 View 객체를 id를 통해서 가져옵니다. 해당 View가 TextView라는 것을 알고 있으니 TextView로 Casting해줍니다. 그 다음 표시할 문자열을 바꾼다던지, 배경색을 바꾼다던지 이전에 XML에서 했던 작업과 같은 것을 자바 코드상에서 설정해줄 수 있습니다.

    View.onClickListener
    코드에서 View값을 변경해야할 가장 일반적인 경우는 버튼이 클릭되었을때의 처리입니다.

    1.Button button = (Button)findViewById(R.id.button);
    2.button.setOnClickListener(new View.OnClickListener() {
    3. public void onClick(View v) {
    4. //Code
    5. }
    6.});

    먼저 findViewById르 해당 Button의 객체를 코드로 불러옵니다. 그 다음 View.onClickListener이라는 Interface를 구현한 객체를 setOnClickListener를 통해서 리스너로 등록을 합니다. 그러면 실제 사용자가 버튼을 클릭했을때 해당 코드가 호출되어 실행됩니다. 클릭을 했을 때 뿐 아니라 다양한 사용자의 입력에 따라 Listener가 정의되어있고 Listener를 등록해서 각각의 경우에 대한 처리를 할 수 있도록 되어있으니 JavaDoc문서를 참고하시기 바랍니다.

    예제
    TextView와 Button을 화면에 표시하고 Button을 클릭했을때 "클릭됨~"이라는 메시지를 TextView에 표시하는 예제입니다.

    myactivity.xml

    01.<?xml version="1.0" encoding="utf-8"?>
    02.<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    03. android:orientation="vertical"
    04. android:layout_width="fill_parent"
    05. android:layout_height="fill_parent"
    06. >
    07.<TextView
    08. android:id="@+id/text"
    09. android:layout_width="fill_parent"
    10. android:layout_height="wrap_content"
    11. android:text=""
    12. />
    13.<Button
    14. android:id="@+id/button"
    15. android:layout_width="fill_parent"
    16. android:layout_height="wrap_content"
    17. android:text="버튼"
    18. />
    19.</LinearLayout>
    MyActivity.java
    01.package kr.mobileplace.lecture;
    02.import android.app.Activity;
    03.import android.os.Bundle;
    04.import android.view.Gravity;
    05.import android.view.View;
    06.import android.widget.Button;
    07.import android.widget.TextView;
    08.public class MyActivity extends Activity {
    09. @Override
    10. protected void onCreate(Bundle savedInstanceState) {
    11. super.onCreate(savedInstanceState);
    12. setContentView(R.layout.myactivity);
    13. Button button = (Button)findViewById(R.id.button);
    14. button.setOnClickListener(new View.OnClickListener() {
    15. public void onClick(View v) {
    16. TextView t = (TextView)findViewById(R.id.text);
    17. t.setText("클릭됨~");
    18. t.setBackgroundColor(0xFFFF0000);
    19. t.setGravity(Gravity.LEFT); }
    20. });
    21. }
    22.}
    이제 Android 프로젝트를 생성하고 화면을 구성하고 사용자 입력에 대한 코드를 처리하는 것까지의 기본 적인 작업들을 한번씩 해보았습니다. 여기까지 실제로 이클립스로 직접 실행시키며 해보면서 전혀 몰랐던 플랫폼과 개발환경에 맛을 보셨을 겁니다. 이제 하나씩 깊이 들어가보도록 하지요.


    [이 게시물은 더어플님에 의해 2016-07-12 15:23:56 개발 꿀팁에서 복사 됨]
    댓글을 작성하시려면 로그인을 하셔야지만 작성가능합니다. [로그인하기] [회원가입하기]
    공지글 이거슨 꿀팁!! 작성 가이드 v1.1 (2013-11-13) +174 더어플 13/03/12 140690
    젤리빈 로그캣 변경점
    젤리빈 로그캣 변경점
    11년전
    h.4327
    v.1
    GNCkorea
    삼성 AdHub SDK 심각한 버그 있네요.
    삼성 AdHub SDK 심각한 버그 있네요.
    11년전
    h.3681
    v.1
    GNCkorea
    구글 넥서스 OTA 끄기 - 루팅 필요
    구글 넥서스 OTA 끄기 - 루팅 필요
    11년전
    h.4125
    v.0
    GNCkorea
    구글 넥서스 수신된 sms/mms 저장경로 아시는 분계신가요??
    구글 넥서스 수신된 sms/mms 저장경로 아시는 분계신가…
    11년전
    h.6689
    v.2
    GNCkorea
    MS 스마트폰 가능성 보인 Zune HD, 그리고 마무리
    MS 스마트폰 가능성 보인 Zune HD, 그리고 마무리
    11년전
    h.1774
    v.0
    GNCkorea
    이제 Round1, MS에게도 스마프폰의 기회는 있었다
    이제 Round1, MS에게도 스마프폰의 기회는 있었다
    11년전
    h.1849
    v.0
    GNCkorea
    MS와 다른 시선의 Apple 스마트폰
    MS와 다른 시선의 Apple 스마트폰
    11년전
    h.3506
    v.0
    GNCkorea
    MS가 생각하는 Smart Phone
    MS가 생각하는 Smart Phone
    11년전
    h.1556
    v.0
    GNCkorea
    윈도우모바일의 침몰과 아이폰의 성공 그 원인을 분석-1980년대로의 여행
    윈도우모바일의 침몰과 아이폰의 성공 그 원인을 분석-1…
    11년전
    h.2619
    v.0
    GNCkorea
    윈도우모바일의 침몰과 아이폰의 성공 그 원인을 분석하다
    윈도우모바일의 침몰과 아이폰의 성공 그 원인을 분석하다
    11년전
    h.1604
    v.0
    GNCkorea
    베가 S5에 탑재된 1300만 화소 카메라 품질은?
    베가 S5에 탑재된 1300만 화소 카메라 품질은? (4)
    11년전
    h.12063
    v.3
    GNCkorea
    베가 S5 하드웨어 성능 및 배터리 시간 테스트
    베가 S5 하드웨어 성능 및 배터리 시간 테스트 (1)
    11년전
    h.9905
    v.0
    GNCkorea
    미니 윈도우가 포함된 베가 S5 특화 기능들
    미니 윈도우가 포함된 베가 S5 특화 기능들
    11년전
    h.7532
    v.0
    GNCkorea
    베가 레이서2보다 발전된 FLUX UX 적용
    베가 레이서2보다 발전된 FLUX UX 적용
    11년전
    h.8253
    v.0
    GNCkorea
    한 손에 들어오는 5인치 LTE 스마트폰! 스카이 베가 S5
    한 손에 들어오는 5인치 LTE 스마트폰! 스카이 베가 S5 (1)
    11년전
    h.3733
    v.1
    GNCkorea
    윈도우8과 함께 등장한 윈도우 스토어, 자유와 통제의 기로에서 선택은?
    윈도우8과 함께 등장한 윈도우 스토어, 자유와 통제의 …
    11년전
    h.3087
    v.0
    GNCkorea
    포켓PC, 옴니아…영욕의 윈도우폰
    포켓PC, 옴니아…영욕의 윈도우폰 (1)
    11년전
    h.3558
    v.1
    GNCkorea
    안드로이드 강좌 6 - Java 코드(Code)에서 뷰(View) 다루기
    안드로이드 강좌 6 - Java 코드(Code)에서 뷰(View) 다…
    11년전
    h.2963
    v.0
    GNCkorea
    안드로이드 강좌 5 - XML에서의 TextView, ImageView, LinearLayout
    안드로이드 강좌 5 - XML에서의 TextView, ImageView, L…
    11년전
    h.5070
    v.1
    GNCkorea
    안드로이드 강좌 4 - 액티비티(Activity), 뷰(View), 레이아웃(Layout)
    안드로이드 강좌 4 - 액티비티(Activity), 뷰(View), 레…
    11년전
    h.5019
    v.1
    GNCkorea
    안드로이드 강좌 3 - 프로젝트 실행과 디버깅 그리고 단말 세팅
    안드로이드 강좌 3 - 프로젝트 실행과 디버깅 그리고 단…
    11년전
    h.3572
    v.0
    GNCkorea
    안드로이드 강좌 2 - 이클립스 개발환경 사용법 및 프로젝트 생성
    안드로이드 강좌 2 - 이클립스 개발환경 사용법 및 프로…
    11년전
    h.3953
    v.1
    GNCkorea
    안드로이드 프로그램이 죽는 경우 디버깅 방법
    안드로이드 프로그램이 죽는 경우 디버깅 방법
    11년전
    h.4715
    v.1
    GNCkorea
    윈도우즈 개발환경 구성 - Eclipse 3.6.1 (Helios), ADT-8.0.1
    윈도우즈 개발환경 구성 - Eclipse 3.6.1 (Helios), ADT…
    11년전
    h.3617
    v.1
    GNCkorea
    Android Virtual Device(AVD) 사용법
    Android Virtual Device(AVD) 사용법
    11년전
    h.6378
    v.1
    GNCkorea
    안드로이드 프로젝트 생성 및 실행
    안드로이드 프로젝트 생성 및 실행
    11년전
    h.2386
    v.0
    GNCkorea
    안드로이드 강좌 1 - 어플리케이션 개발 시작하기. SDK 설치 및 실행
    안드로이드 강좌 1 - 어플리케이션 개발 시작하기. SDK …
    11년전
    h.3430
    v.1
    GNCkorea
    잼있게 따라해보는 옵티머스 LTE2 테마박스
    잼있게 따라해보는 옵티머스 LTE2 테마박스
    11년전
    h.2831
    v.0
    GNCkorea