컨텍스트 메뉴
컨텍스트 메뉴란 뷰를 롱클릭했을때 나타나는 메뉴입니다.
이번에는 아이유 사진을 등록하고 아이유 사진을 누르면 메뉴가 뜨게 해보겠습니다.
기본적으로 컨텍스트 메뉴를 달고 싶으면
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,"그림선택");;
}
}
}
결과화면
'프로그래밍 > 안드로이드' 카테고리의 다른 글
안드로이드 쓰레드 4번째 메시지 풀을 이용하는 방법(obtain 메소드) (0) | 2012.08.21 |
---|---|
안드로이드 쓰레드 3번째 쓰레드를 구현하는 클래스와 메인 클래스를 따로 만들어서 처리해보자 (0) | 2012.08.21 |
안드로이드 쓰레드 구현 2번째 방법 post 메소드를 이용하자. (0) | 2012.08.21 |
안드로이드 쓰레드 첫번째 예제 handleMessage 구현하는 방법 (1) | 2012.08.21 |
안드로이드 Listener의 이해, 버튼을 누르면 Text가 바뀐다 (0) | 2012.08.15 |
안드로이드 Toast 메시지에 내가 원하는 그림을 넣어보자 (2) | 2012.08.13 |
안드로이드 스마트폰 진동을 내맘대로 다뤄보자 (0) | 2012.08.03 |
사운드폴을 이용한 음악파일 출력 (0) | 2012.08.03 |