프로그래밍/안드로이드

안드로이드 Context Menu를 만들어보자.

가카리 2012. 8. 16. 17:22
반응형

컨텍스트 메뉴

 

컨텍스트 메뉴란 뷰를 롱클릭했을때 나타나는 메뉴입니다.

 

이번에는 아이유 사진을 등록하고 아이유 사진을 누르면 메뉴가 뜨게 해보겠습니다.

 

 

 

기본적으로 컨텍스트 메뉴를 달고 싶으면

 

void Acitivity.registerForContextMenu(View view)

 

메소드를 사용해야되고

 

기본적인 메뉴 생성은

 

void onCreateContextMenu(ContextMenu menu, View v, ContextMenu.ContextMenuInfo menuInfo)

 

에서 처리를 합니다.

 

그리고 컨텍스트 메뉴 아이템이 선택됬을 때는

 

boolean onContextItemSelected(MenuItem item)

 

에서 처리하면됩니다.

 

이때 오버라이딩 방법은

 

소스에서 오른쪽 클릭을 누르면 다음과 같이 뜨는데

 

Source에서 Override/Implement Method로 갑니다.

 

 

 

 

거기에서 필요한 override 메소드를 선택하고 ok를 누르면 자동으로 헤더부분이 만들어집니다.

 

현재는 onContextItemSelected onCreateContextMenu만 선택해서 OK를 하면 됩니다.

 

 

 

activity_main.xml 파일

 

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

    xmlns:tools="http://schemas.android.com/tools"

    android:layout_width="fill_parent"

    android:layout_height="fill_parent"

    android:orientation="vertical"

    >

   

           <Button

               android:id = "@+id/button"

               android:layout_width="wrap_content"

               android:layout_height="wrap_content"

               android:text="Button"

               />

           <EditText

               android:id="@+id/edittext"

               android:layout_width="wrap_content"

               android:layout_height="wrap_content"

               android:text="EditText"

               />

           <ImageView

               android:id="@+id/myimage"

               android:layout_width="wrap_content"

               android:layout_height="wrap_content"

               android:src="@drawable/iu"

               />

 

</LinearLayout>

 

 

MainAcitivity.java

 

package com.example.contextmenu;

 

import android.os.Bundle;

import android.app.Activity;

import android.graphics.Color;

import android.view.ContextMenu;

import android.view.ContextMenu.ContextMenuInfo;

import android.view.Menu;

import android.view.MenuItem;

import android.view.View;

import android.widget.Button;

import android.widget.EditText;

import android.widget.ImageView;

import android.widget.Toast;

 

public class MainActivity extends Activity {

 

           Button mBtn;

           EditText mEdit;

           ImageView mImage;

          

    @Override

    public void onCreate(Bundle savedInstanceState) {

        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_main);

       

        mBtn = (Button)findViewById(R.id.button);

        registerForContextMenu(mBtn);//컨텍스트 메뉴 등록

       

        mEdit = (EditText)findViewById(R.id.edittext);

        registerForContextMenu(mEdit);//컨텍스트 메뉴 등록

       

        mImage = (ImageView)findViewById(R.id.myimage);

        registerForContextMenu(mImage);//컨텍스트 메뉴 등록

    }

 

           @Override

           public boolean onContextItemSelected(MenuItem item) {

                     // TODO Auto-generated method stub

                    

                     //이부분에서 어떤게 눌렸는지에 따라서 처리함

                     //id 가져와서 id 따라 각 다른 행동을 하게됨.

                     switch(item.getItemId()){

                     case 1:

                                mBtn.setTextColor(Color.RED);

                                return true;

                     case 2:

                                mBtn.setTextColor(Color.GREEN);

                                return true;

                     case 3:

                                mBtn.setTextColor(Color.BLUE);

                                return true;

                     case 4:

                                Toast.makeText(this," 번역했다.", Toast.LENGTH_SHORT).show();

                                return true;

                     case 5:

                                Toast.makeText(this," 인식했다.", Toast.LENGTH_SHORT).show();

                                return true;

                     case 6:

                                Toast.makeText(this," 그림이내", Toast.LENGTH_SHORT).show();

                                return true;

                     }

                     return super.onContextItemSelected(item);

           }

 

           @Override

           public void onCreateContextMenu(ContextMenu menu, View v,

                                ContextMenuInfo menuInfo) {

                     // TODO Auto-generated method stub

                     super.onCreateContextMenu(menu, v, menuInfo);

                    

                     if(v ==mBtn){

                                //숫자 1,2,3,4,5,6은 각 메뉴의 id 뜻함

                                //id 어떤게 눌렸는지 알수 있다.

                                menu.setHeaderTitle("Button Menu");

                                menu.add(0, 1, 0, "Red");

                                menu.add(0, 2, 0, "Green");

                                menu.add(0, 3, 0, "Blue");

                     }

                    

                     if(v == mEdit){

                                menu.add(0, 4, 0, "번역하기");

                                menu.add(0, 5, 0, "필기인식");

                     }

                    

                     if(v == mImage){

                                menu.add(0,6,0,"그림선택");;

                     }

           }

 

}

 

 

 

 

 결과화면