2010-06-02 2 views
17

Android에서 작업하는 방법을 배우려고 노력 중이며 인터페이스를 작성하는 가장 좋은 방법이 무엇인지 잘 모릅니다.Android App UI에서 "드릴 다운"탐색 구현

저는 다른 섹션을 살펴보기 위해 탐색 컨트롤러와 테이블 뷰를 사용하는 iPhone 앱을 포팅하는 작업을 해왔습니다. 기본적으로 누군가 다른 테이블로 이동하는 테이블의 셀을 터치합니다. 테이블에있는 셀을 터치하면 정보를 표시하는 웹보기로 이동합니다.

나는 안드로이드 앱과 비슷한 것을하고 싶지만, 안드로이드에 대한 더 좋은 방법이 있다면 어떻게 될지 모르겠다. 내 목적에 따라 webview를 사용하는 방법을 알아 냈지만 테이블 트리에서 앞뒤로 움직이는 것은 불분명합니다.

답변

26

드릴 다운을 할 때 iphone에서 사용자가 목록 행을 터치하고 오른쪽에서 새보기를 슬라이드하면 대부분의 경우 탐색 모음이 표시됩니다. 사용자에게 돌아갈 수있는 옵션을 제공하는 상단?

안드로이드가 이것을 처리하는 방법은 단순히 새로운 활동을 시작하는 것입니다. ListItem을 클릭하면 'Books'ListActivity를 시작하는 새로운 의도를 정의 할 수 있습니다. 대부분의 사람들이 미리보기 화면으로 돌아가는 방법으로 전용 '뒤로'키를 볼 때 아이폰 상단의 탐색 표시 줄은 안드로이드의 표준 UI가 아닙니다.

당신이 전에 보지 못한 경우 의도을 시작하는 방법이 있습니다 :

Intent chaptersIntent = new Intent(this, Chapters.class); 
this.startActivity(chaptersIntent); 

이 문서는 가치가 빠른 것이 완벽

http://d.android.com/guide/topics/fundamentals.html

을 활동을 설명으로 통해 읽기 또한 TableView - ListView의 안드로이드 버전을 살펴보십시오 :

http://d.android.com/reference/android/widget/ListView.html

와 ListActivity :

http://d.android.com/reference/android/app/ListActivity.html


편집 : 샘플 코드 나는 그래서 당신은 같은 책의 ID를 통과 그것은이

public class Books extends ListActivity { 

private String[] mBooks = new String[]{ "Book1", "Book2", "Book3", "Book4" }; 

/** Called when the activity is first created. */ 
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    ArrayAdapter<String> booksAdapter = new ArrayAdapter<String>(this, 
      android.R.layout.simple_list_item_1, 
      android.R.id.text1, 
      mBooks); 

    this.setListAdapter(booksAdapter); 

} 

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    super.onListItemClick(l, v, position, id); 

    Intent mViewChaptersIntent = new Intent(this, Chapters.class); 
    mViewChaptersIntent.putExtra("BookName", mBooks[position]); 
    startActivity(mViewChaptersIntent); 
} 

} 

과 같이 할 것 인 텐트에 추가로 추가 한 다음 챕터 활동에서 onCreate 메서드로 해당 추가 항목을 얻습니다.

마지막으로
@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 

    Bundle extras = getIntent().getExtras(); 
    if(extras != null) { 
     String bookId = extras.getString("BookName"); 
    } 
} 

모든 새로운 활동이 당신의 AndroidManifest.xml 파일에 추가되어 있는지 확인합니다 :

<activity android:name=".YourClassName" 
    android:label="@string/activity_name" 
    > 
</activity> 

희망 탐색 컨트롤러의 다른 수준에가는에 대한 애플의 용어가 드릴 다운

+0

이게 내가 찾고있는 것 같아. 나는 그것을 이해하고 있다고 확신하지는 않지만, 유망 해 보입니다. onclick 테이블 행에 대한 작업 및 Activity.setContentView 사용하여보기를 전환 할 수 있지만 그것을 쉽게 다시 설정하는 방법을 확실하지 않습니다. (뒤로 단추가 프로그램을 종료합니다, 내 프로젝트는 하나의 활동 만 있기 때문에 생각합니다.). 예를 들어 각 섹션 (Books.class, Chapters.class 등)에 대해 다른 클래스를 만들어야하는 것처럼 보입니다. 생성자 Intent (new View.OnClickListener() { }, Class )이 정의되지 않았습니다. – AndyD273

+0

Intent informationalIntent = new Intent (this, Informational.class); startActivity (informationalIntent); – AndyD273

+0

위 샘플 코드를 추가 했으므로 희망적으로 더 명확합니다. – m6tt

2

Android UI가 만들어지는 가장 기본적인 방법은 xml을 사용하는 것입니다. 나는 당신이 드릴 다운을 말할 때 당신이 의미하는 것이 정확히 무엇인지 모르겠다. 그러나 당신이보기를 바꾸기를 원한다면, 한 세트의 xml 요소를 보이게하고 다른 세트는 보이지 않게하는 것이 좋다. 자세한 내용은 개발자 페이지를 확인하십시오.

http://developer.android.com/guide/topics/ui/index.html

이도 아주 좋은 초보자 자원 언급하는 것을 잊었다. http://mobiforge.com/designing/story/understanding-user-interface-android-part-1-layouts

+0

도움 (도서 -> 장 -> 절 : 원하는 책을 터치하면 장 목록이 표시됩니다. 원하는 장을 터치하면 더 깊은 레벨로 이동합니다. 구절에서 장으로 이동하려면 탐색 컨트롤러의 뒤로 버튼을 클릭하기 만하면 이전 위치를 기억합니다.) XML 방식에 익숙해 져야합니다. xCode에서는 각 섹션마다 다른보기 컨트롤러가 있어야하며 물건 표시/숨기기가 더 어렵습니다. – AndyD273

1

이미 지적한 바와 같이, 레이아웃을 수행하는 것은 XML way이 가장 바람직하다.

기본적으로 사람이 다른 테이블로 드릴 다운 테이블에서 셀을 감동. 해당 테이블의 셀 을 터치하면 해당 정보를 표시하는 웹보기로 드릴 다운됩니다. 나는 아래 용어 훈련에서 이해 것과

, 이것은 당신이 공식 문서

이벤트 리스너에서

http://developer.android.com/guide/topics/ui/ui-events.html

필요 와트 될 수있다 보기의 인터페이스 하나의 콜백 메소드가 포함 된 클래스입니다. 이 메소드는 수신기가 인 View가 UI의 항목과 사용자 상호 작용에 의해 트리거 될 때 Android 프레임 워크에서 호출하는 이됩니다.

+0

그래서 XML 방식으로, 사용자가 책을 선택하고 장으로 테이블을 다시로드하고 사용자가 장을 선택하면 테이블을 숨기고 웹보기를 표시하여 텍스트를 표시 할 때 터치 이벤트를 잡는 방법이 있습니다 , 하나의 레이아웃으로 모두? – AndyD273

+0

챕터를 표시 할 때도 테이블 레이아웃을 다시 사용할 수 있습니다. WebView는 가독성을 위해 다른 레이아웃을 사용해야합니다. – primpap