-
Menu 추가하는 신기한 방법(?)예전 글들/Android 2011. 4. 19. 13:57반응형옆화면 처럼 메뉴를 띄우는 방법 중에 복잡한 듯하면서 왠지 모르게 좋아보이는 소스를 발견!!
우선 처음 호출되는 클래스는 ch8ShapeShifter 클래스로 내용은
public class ch8ShapeShifter extends Menu {
@Override
void prepareMenu() {
addMenuItem("Tweened Animation", TweenActivity.class);
addMenuItem("Tweened Animation - Layout", TweenLayoutActivity.class);
addMenuItem("Frame-By-Frame Animation - ImageView Background", FrameAnimationActivity.class);
addMenuItem("Frame-By-Frame Animation - ImageSwitcher", FrameAnimationActivity2.class);
addMenuItem("Shape Viewer", ShapeViewer.class);
}
}
아쉽게도 글에 색이 추가가 안되서 쩝;; 어쨌든 prepareMenu() 함수는 Menu클래스로부터 adstract 선언된 함수로 extends 됐으니 무조건 구현해야겠죠???
아래는 Menu 클래스 소스임돠~
public abstract class Menu extends ListActivity {
private SortedMap<String, Object> actions = new TreeMap<String, Object>();
@Override
protected void onListItemClick(ListView l, View v, int position, long id){
String key = (String) l.getItemAtPosition(position);
startActivity((Intent)actions.get(key));
}
// Called when the activity is first created
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
prepareMenu();
String[] keys = actions.keySet().toArray(new String[actions.keySet().size()]);
setListAdapter(new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, keys));
}
public void addMenuItem(String label, Class<?> cls) {
actions.put(label, new Intent(this, cls));
}
abstract void prepareMenu();
}
왜 이렇게 복잡하게 짤까 생각해보니 이렇게 만들어 놓으면 나중에 메뉴 추가할 때 편하지 않으려나??
이리 짜면 어떤 장점이 있을지는 모르겠지만 배울 점이 많은 듯하여 올려놓습니다~반응형'예전 글들 > Android' 카테고리의 다른 글
Map과 HashMap 클래스 (0) 2011.05.10 메뉴 만들때 참고하면 좋을 듯 (0) 2011.05.09 다른 Layout으로 넘어가는 법 (0) 2011.04.19 안드로이드 개념 잡기(활동(Activity), 의도(Intent)) - 시작하세요!안드로이드 프로그래밍 참고 (0) 2010.10.04 R 클래스에 있는 리소스 id를 소스에서 불러오는 방법 (0) 2010.10.03 댓글