Android 는 DrawerLayout 을 사용 하여 양 방향 사 이 드 메뉴 구현
6298 단어 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)
이 방법 은 메뉴 를 여 는 데 사 용 됩 니 다.메뉴 를 닫 는 동작 과 비슷 합 니 다.
이 세 가지 방법 으로 위의 효 과 를 기본적으로 실현 할 수 있 습 니 다.자,간단 한 양 방향 사 이 드 메뉴 가 완성 되 었 습 니 다.사용자 정의 컨트롤 을 사용 하지 않 아 도 됩 니 다.사용자 정의 컨트롤 은 더욱 풍부 한 애니메이션 효과 가 있 을 수 있 습 니 다.이 는 여러분 스스로 실현 해 야 합 니 다.
원본 다운로드 점여기,이곳
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Android 는 DrawerLayout 를 사용 하여 QQ 6.0 사 이 드 슬라이드 메뉴 를 모방 합 니 다.DrawerLayout 에 대해 서 는 이미 알 고 있 을 것 이 라 고 믿 습 니 다.첫 번 째 키 보 기 는 메 인 인터페이스 이 고 뒤의 두 개의 Fragment 는 좌우 메뉴 입 니 다.Gravity 를 통 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.