일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |
- 안드로이드 앨범
- swift sms
- 스위프트 카메라
- Flutter UIKitView MethodChannel
- 앱 꺼졌을 때 푸시 데이터 저장
- swift autolayout
- 플러터 뷰 컨트롤러
- 스위프트 테이블 뷰 셀
- Swift flutterview
- 앱 백그라운드 푸시 데이터 저장
- 안드로이드 에러
- FlutterView MethodChannel
- 스위프트
- 스위프트 웹뷰
- flutter 회전
- 푸시 데이터 저장
- flutter rotate
- Flutter NativeView
- 스위프트 푸시
- native flutter view
- silent push
- 스위프트 UserDefaults
- 안드로이드 숏컷
- swift 문자
- Swift flutterviewcontroller
- 스위프트 앨범
- 안드로이드 FCM
- NotificationService Extension
- 노티피케이션 익스텐션
- 안드로이드 바로가기
- Today
- Total
Things take time
[Android] DrawerLayout 사용하기 본문
[DrawerLayout]
https://developer.android.com/reference/android/support/v4/widget/DrawerLayout
기본 개념은 공식 문서에서!
화면의 각 부분으로부터 당겼을 때 하나의 뷰를 drawer 하는, 즉 서랍여는 것과 마찬가지로 꺼내어 보는 역할을 수행하는 레이아웃이다.
Drawer을 사용하기 위한 자식 레이아웃은 layout_gravity 속성을 이용하여 열기 위한 위치를 지정할 수 있다.
DrawerLayout을 사용하기 위해서는 주요 콘텐츠 뷰(메인 뷰)의 height를 match_parent를 사용하고 layout_gravity를 사용하지마라. 메인 뷰가 추가 된후에 drawer를 자식으로 더하고 layout_gravity를 적절히 설정하라. Drawers는 보통 고정된 너비값과 match_parent의 height를 사용한다. => 메인뷰는 Drawers가 나오기 전 바탕이 되는 뷰를 의미한다. Drawers는 메인 뷰 위에 나타나기때문에, 부모 인 메인 뷰의 높이를 따라가기에 match_parent를 사용한다는 것이고, 메인 뷰를 다 덮지 않기 때문에 고정된 너비값을 가진다는 것이다.
애니메이션이 동작하거나 특정 동작중엔 drawers를 펼치는 작업을 하지말고, 기본 idle상태일 때 사용하는 것이 좋다.
도큐먼트의 예제와 참고할만한 좋은 사이트가 있어서 같이 정리!
https://recipes4dev.tistory.com/139
안드로이드 기본 예제들에 대한 설명이 잘되있어서 자주 참고하면 좋을듯!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 | <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical"> <Button android:id="@+id/btn_open" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="OPEN" /> <Button android:id="@+id/btn_close" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="CLOSE" /> <android.support.v4.widget.DrawerLayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <!-- The main content view --> <TextView android:gravity="center" android:layout_width="match_parent" android:layout_height="match_parent" android:text="Main Content View"/> <!-- The navigation drawer --> <TextView android:gravity="center" android:layout_gravity="right" android:layout_width="200dp" android:layout_height="match_parent" android:background="#009688" android:text="Drawer View"/> </android.support.v4.widget.DrawerLayout> </LinearLayout> | cs |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 | public class MainActivity extends AppCompatActivity { DrawerLayout drawerLayout; Button btn_open; Button btn_close; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); drawerLayout = findViewById(R.id.drawer_layout); btn_open = findViewById(R.id.btn_open); btn_close = findViewById(R.id.btn_close); btn_open.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { drawerLayout.openDrawer(Gravity.RIGHT); } }); btn_close.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { if(drawerLayout.isDrawerOpen(Gravity.RIGHT)) { drawerLayout.closeDrawer(Gravity.RIGHT); } } }); } } | cs |
- 주의
1. 레이아웃에서 drawer에 선언한 layout_gravity와 다른 방향의 값을 코드에 작성하면 에러가 난다. 같은 방향 값으로 주어야한다.
2. DrawerLayout에서 메인이 되는 뷰를 먼저 작성한다.
3. Drawer는 Layout_gravity로 열리는 방향을 지정한다.
4. Drawer는 여러 개를 사용할 수 있다. 특정 뷰에서는 A라는 Drawer를 어떨 때는 B라는 Drawer켜야한다면, openDrawer(View)로 findViewById를 통해 뷰를 파라미터로 넘길 수 있다.
'Android(기능)' 카테고리의 다른 글
[Android] 현재 날짜, 형식, 시간, 분 구하기 / 날짜 차이 구하기 (0) | 2019.06.12 |
---|---|
[Android] setLayoutParams에서 width, height를 dp로 바꿀 때 (0) | 2019.05.23 |
[Android] 리사이클러 뷰(RecyclerView) 사용하기 (0) | 2019.01.25 |
[Android] 프래그먼트! 프레임레이아웃? (0) | 2019.01.23 |
[Android] Webivew의 키보드 감지 이벤트 (0) | 2018.12.06 |