안드로이드

[Android] Spinner, Menu 예제 [펌]

SojuMan 2011. 11. 22. 15:00

원본 : http://www.cyworld.com/egp777_blog/13196716

안드로이드 UI 컴포넌트 중에서 Spinner와 Menu에 관한 예제입니다..

Spinner는 일명 라디오 버튼인데 안드로이드 에서는 Spinner라고 부릅니다..

Menu는 안드로이드 기기에서 Menu버튼을 클릭했을 때 하단에 나타나는 메뉴 입니다..

파일 구조를 보겠습니다..

 

 

위와 같이 프로젝트를 생성해 주시구요..


이제 레이아웃 소스 및 자원 소스를 보겠습니다..


-------------------------- main.xml --------------------------------------

 

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


메뉴버튼의 아이템 자원소스 입니다..


--------------------- menu.xml -----------------------------------------

 

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


----------------------- strings.xml ---------------------------------------

 

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

스피너 아이템에 사용할 소스 입니다..

----------------------------- spinner.xml -------------------------------

 

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

이제 마지막으로 액티비티 소스입니다..

-------------------- LINTestMenuActivity.java ---------------------------
package com.lin.app;

import android.app.Activity;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.net.Uri;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemSelectedListener;
import android.widget.Button;
import android.widget.Spinner;
import android.widget.Toast;

public class LINTestMenuActivity extends Activity{
    /** Called when the activity is first created. */
Spinner mSpinner; // 스피너 객체
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        mSpinner=(Spinner) findViewById(R.id.Spinner01); // 스피너 객체화
        mSpinner.setOnItemSelectedListener(new OnItemSelectedListener() {
       
@Override
public void onItemSelected(AdapterView<?> parent, View view,
int position, long id) {
/*
* 스피너 선택 리스너
*/
// 선택한 아이템 
String selectedItem=parent.getItemAtPosition(position).toString();
Toast.makeText(getApplicationContext(), selectedItem, 
Toast.LENGTH_SHORT).show();
}

@Override
public void onNothingSelected(AdapterView<?> parent) {
/*
* 스피너 선택 안했을 때 리스너
*/
// TODO Auto-generated method stub
Toast.makeText(getApplicationContext(), "Nothing", 
Toast.LENGTH_SHORT).show();
}
});
    }
/////////////////////// 메뉴 리스너 /////////////////////////////////////////
    @Override
public boolean onCreateOptionsMenu(Menu menu){
    /*
    * 메뉴 생성할 때 호출되는 메소드
    */
MenuInflater inflater=getMenuInflater();
inflater.inflate(R.menu.menu, menu); // 메뉴 아이템 셋팅
return super.onCreateOptionsMenu(menu);
}
    @Override
public boolean onOptionsItemSelected(MenuItem item){
/*
* 아이템 선택 리스너
*/
switch( item.getItemId() ){
case R.id.menu_visible :
Toast.makeText(getApplicationContext(), "Spinner visible", 
Toast.LENGTH_SHORT).show();
mSpinner.setVisibility(Spinner.VISIBLE);
break;
case R.id.menu_invisible :
Toast.makeText(getApplicationContext(), "Spinner invisible", 
Toast.LENGTH_SHORT).show();
mSpinner.setVisibility(Spinner.INVISIBLE);
break;
}
return super.onOptionsItemSelected(item);
}
   
}
------------------------------------------------------------------------

위와 같이 코딩해 주시고 실행해 보겠습니다..

먼저 스피너를 선택해 보겠습니다..

 

위와 같이 스피너 메뉴가 나올때 자바 프로그래밍 이란 메뉴를 선택해 보겠습니다..


그럼 다음과 같이 선택값을 뿌려줍니다..


 

그럼 이제 마지막으로 메뉴버튼을 클릭해서 메뉴를 선택해 보겠습니다..


이때 메뉴에 visible , invisible메뉴가 보이는데 이것의 대상은 위의 스피너 객체입니다..


즉 invisible메뉴를 선택하면 스피너 객체가 보이지 않게 되고 visible을 선택하면 다시 스피너가 보이게 됩니다.


 

이때 invisible을 선택하면


 

위와 같이 선택한 메뉴가 표시되면서 스피너 객체가 보이지 않게 됩니다..


그럼 다시 메뉴를 클릭하고 visible을 선택하면


 

다음과 같이 다시 스피너가 보이게 됩니다..


아주 단순한 컴포넌트 사용법 이었습니다..


위에서 리스너 객체 등록하는 부분이 좀 난해해 보이거나 복잡해 보인다면...


자바에 대한 공부가 부족하신 것 입니다..


자바의 innner클래스에 관해 공부하고 보시면 이해가 금방 되실 겁니다..


다른 방법으로 인터페이스를 상속받아 구현해도 됩니다..