Android 는 DrawerLayout 을 사용 하여 양 방향 사 이 드 메뉴 구현

머리말
  안 드 로 이 드 개발 에서 많은 app 들 이 사 이 드 메뉴 를 사용 합 니 다.어떤 것 은 사용자 정의 컨트롤 로 사 이 드 메뉴 를 실현 하지만 안 드 로 이 드 는 우리 에 게 DrawerLayout 류 를 제공 하여 사 이 드 메뉴 를 실현 합 니 다.사 이 드 메뉴 를 어떻게 사용 하 는 지 알려 드 리 겠 습 니 다.
이루어지다
『8195』효과 도 를 살 펴 보 겠 습 니 다.

여기 서 우리 가 실현 하 는 양 방향 사 이 드 메뉴 는 화면 상단 에 두 개의 단 추 를 추가 하고 클릭 하면 메뉴 를 열거 나 메뉴 를 닫 습 니 다.물론 스스로 미 끄 러 질 수도 있 습 니 다.
레이아웃 파일 의 코드:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
 android:orientation="vertical"
 xmlns:tools="http://schemas.android.com/tools"
 android:layout_width="match_parent"
 android:layout_height="match_parent">
 <RelativeLayout 
 android:layout_width="fill_parent"
 android:layout_height="45dp"
 android:background="#00ff00"
 >
 <Button 
 android:id="@+id/btn_toggle_left"
 android:layout_width="wrap_content"
 android:layout_height="50dp"
 android:text="   "
 />
 <Button 
 android:layout_alignParentRight="true"
 android:id="@+id/btn_toggle_right"
 android:layout_width="wrap_content"
 android:layout_height="50dp"
 android:text="   "
 />
 </RelativeLayout>
 <android.support.v4.widget.DrawerLayout
 android:id="@+id/drawerlayout"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
 <!--    ,  DrawerLayout       ,        -->
 <FrameLayout 
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 >
 <ImageView 
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:background="@drawable/mainbackground"
 />
 </FrameLayout>
 <!--      -->
 <RelativeLayout
 android:id="@+id/layout_menu_left"
 android:layout_gravity="start" 
 android:layout_width="150dp"
 android:layout_height="fill_parent"
 android:background="#000"
 >
 <TextView
 android:textColor="#ffffff"
 android:gravity="center"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:text="    "
 />
 </RelativeLayout>
 <!--      -->
 <RelativeLayout
 android:id="@+id/layout_menu_right"
 android:layout_gravity="end" 
 android:layout_width="150dp"
 android:layout_height="fill_parent"
 android:background="#000"
 >
 <TextView
 android:textColor="#ffffff"
 android:gravity="center"
 android:layout_width="fill_parent"
 android:layout_height="fill_parent"
 android:text="    "
 />
 </RelativeLayout>

 </android.support.v4.widget.DrawerLayout>
</LinearLayout>
MainActivity 코드:

public class MainActivity extends Activity implements OnClickListener{

 private DrawerLayout mDrawerLayout;
 private View v_menu_left,v_menu_right;
 private Button btn_left,btn_right;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
 super.onCreate(savedInstanceState);
 setContentView(R.layout.activity_main);
 initView();
 initListener();
 }

 private void initListener() {
 btn_left.setOnClickListener(this);
 btn_right.setOnClickListener(this);
 }

 private void initView() {
 mDrawerLayout = (DrawerLayout) findViewById(R.id.drawerlayout);
 v_menu_left = findViewById(R.id.layout_menu_left);
 v_menu_right = findViewById(R.id.layout_menu_right);
 btn_left = (Button) findViewById(R.id.btn_toggle_left);
 btn_right = (Button) findViewById(R.id.btn_toggle_right);
 }

 @Override
 public void onClick(View v) {
 if(v.getId()==R.id.btn_toggle_left){
 toggleLeft();
 }else if(v.getId()==R.id.btn_toggle_right){
 toggleRight();
 }
 }

 private void toggleRight() {
 if(mDrawerLayout.isDrawerOpen(v_menu_right)){
 mDrawerLayout.closeDrawer(v_menu_right);
 }else{
 mDrawerLayout.openDrawer(v_menu_right);
 }

 }

 private void toggleLeft() {
 if(mDrawerLayout.isDrawerOpen(v_menu_left)){
 mDrawerLayout.closeDrawer(v_menu_left);
 }else{
 mDrawerLayout.openDrawer(v_menu_left);
 }
 }

}
  레이아웃 파일 에서 첫 번 째 키 컨트롤 은 메 인 레이아웃 입 니 다.바로 인터페이스 중앙 에 표 시 된 위치 입 니 다.그 다음 에 두 번 째 와 세 번 째 컨트롤 은 왼쪽 메뉴 와 오른쪽 메뉴 로 양쪽 에 숨 긴 다음 에 미 끄 러 질 때 천천히 표 시 됩 니 다.두 번 째 와 세 번 째 컨트롤 의 속성 설정 에서 주의해 야 할 것 은 android:layot 입 니 다.gravity 속성,이 속성 은 메뉴 의 위치 가 왼쪽 인지 오른쪽 인지 결정 합 니 다.'start'로 설정 되 었 을 때 메뉴 는 왼쪽 에 있 고'end'로 설정 되 었 을 때 메뉴 는 오른쪽 에 있 기 때문에 메뉴 의 위치 와 컨트롤 의 순서 가 상관 없고 속성 값 과 만 관련 이 있 습 니 다.
  그리고 MainActivity 에서 DrawerLayout 대상 과 두 개의 메뉴 대상 을 얻 고 버튼 에 클릭 방법 을 추가 합 니 다.왼쪽 메뉴 로 말 하면 단 추 를 눌 렀 을 때 왼쪽 메뉴 가 닫 혔 다 면 메뉴 를 열 고 메뉴 가 열 렸 다 면 닫 습 니 다.DrawerLayout 의 몇 가지 일반적인 방법 을 알 아야 합 니 다.
isDrawerOpen(View v)
이 방법 은 메뉴 가 열 린 상태 인지 여 부 를 판단 하 는 데 사 용 됩 니 다.들 어 오 는 것 은 View 입 니 다.메뉴 의 View,즉 왼쪽 메뉴 나 오른쪽 메뉴 를 표시 합 니 다.메뉴 의 수량 이 하나 이상 이 므 로 다른 View 를 보 내 어떤 메뉴 인지 판단 해 야 합 니 다.
closeDrawer(View v)
이 방법 은 메뉴 를 닫 는 데 사 용 됩 니 다.들 어 오 는 것 도 메뉴 의 View 입 니 다.
openDrawer(View v)
이 방법 은 메뉴 를 여 는 데 사 용 됩 니 다.메뉴 를 닫 는 동작 과 비슷 합 니 다.
  이 세 가지 방법 으로 위의 효 과 를 기본적으로 실현 할 수 있 습 니 다.자,간단 한 양 방향 사 이 드 메뉴 가 완성 되 었 습 니 다.사용자 정의 컨트롤 을 사용 하지 않 아 도 됩 니 다.사용자 정의 컨트롤 은 더욱 풍부 한 애니메이션 효과 가 있 을 수 있 습 니 다.이 는 여러분 스스로 실현 해 야 합 니 다.
원본 다운로드 점여기,이곳
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기