Wearable Action Drawer를 설치해 봤습니다.

11185 단어 AndroidWearAndroid
Wearable Action Drawer는 안드로이드 Wear의 소재 디자인 중 하나인 Wear2입니다.0에서 추가합니다.

이루어지다


차리다


Wear용 프로젝트 제작 등의 설명은 생략합니다.build.gradle(app)에 다음과 같은 내용이 추가되어 있으면com.google.android.support:wearable 버전이 변경됩니다.
(2017년 2월 10일 기준 2.0.0)compile 'com.google.android.support:wearable:2.0.0'

이루어지다


Wearable Action Drawer는 레이아웃 파일에 설명되어 있습니다.
부모님은 Wearable DrawerLayout이어야 합니다.
또한 내용에 따라 Drawer를 스크롤하거나 숨기기 위해서는 NestedScrollView나 RecyclearView를 기술해야 합니다.
(NestedScrollingChild를 구현하는 View여야 함)
activity_example.xml
<?xml version="1.0" encoding="utf-8"?>
<android.support.wearable.view.drawer.WearableDrawerLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:deviceIds="wear">

    <android.support.v4.widget.NestedScrollView
        android:id="@+id/scroll_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">

        <android.support.wearable.view.BoxInsetLayout
            android:layout_width="match_parent"
            android:layout_height="match_parent">

            <TextView
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:text="Hello World!"
                app:layout_box="all"/>

        </android.support.wearable.view.BoxInsetLayout>

    </android.support.v4.widget.NestedScrollView>

    <android.support.wearable.view.drawer.WearableActionDrawer
        android:id="@+id/bottom_action_drawer"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:action_menu="@menu/action_drawer_menu" />

</android.support.wearable.view.drawer.WearableDrawerLayout>
Wearable Action Drawer의 app:action_menu에 설명된 메뉴 에셋을 만듭니다.
action_drawer_menu.xml
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
    <item
        android:id="@+id/menu_android1"
        android:icon="@drawable/ic_android"
        android:title="Android1" />
    <item
        android:id="@+id/menu_android2"
        android:icon="@drawable/ic_android"
        android:title="Android2" />
    <item
        android:id="@+id/menu_android3"
        android:icon="@drawable/ic_android"
        android:title="Android3" />
</menu>
Activity 측 코드입니다.
프로젝트 클릭을 실행하고 있는 청중.
ExampleActivity.java
import android.os.Bundle;
import android.support.wearable.activity.WearableActivity;
import android.support.wearable.view.drawer.WearableActionDrawer;
import android.view.MenuItem;
import android.widget.Toast;

public class ExampleActivity extends WearableActivity implements WearableActionDrawer.OnMenuItemClickListener {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_example);

        initViews();
    }

    @Override
    public boolean onMenuItemClick(MenuItem menuItem) {
        Toast.makeText(this, menuItem.getTitle(), Toast.LENGTH_SHORT).show();
        return false;
    }

    private void initViews() {
        WearableDrawerLayout wearableDrawerLayout = (WearableDrawerLayout) findViewById(R.id.drawer_layout);
        wearableDrawerLayout.peekDrawer(Gravity.BOTTOM);

        WearableActionDrawer wearableActionDrawer = (WearableActionDrawer) findViewById(R.id.bottom_action_drawer);
        wearableActionDrawer.setOnMenuItemClickListener(this);
    }
}
위의 코드는 바로 이런 느낌의 레이아웃이다.


사용자 정의


Overflow 아이콘 표시


레이아웃 파일의 Wearable Action Drawer에 다음 내용을 추가하면 오버플로우 아이콘이 됩니다.(기본값은 가짜)app:show_overflow_in_peek="true"

스크롤할 때 Drawer 표시


기본적으로 스크롤 내용이 위쪽이나 아래쪽에 도달하면 Drawer가 표시되며 그렇지 않으면 숨겨집니다.
다음을 추가하여 아래에서 위로 스크롤해도 Drawer가 항상 표시됩니다.(기본값은 가짜)wearableActionDrawer.setShouldPeekOnScrollDown(true);

보태다


Overflow 아이콘을 숨기면 메뉴 에셋의 첫 번째 아이콘이 표시되는데 왜 표시되지 않는지...

메뉴 내용이 프로그램 라이브러리의 원본 코드보다 변경되었을 때 표시도 업데이트됩니다. 시도해 보십시오.wearableActionDrawer.getMenu().getItem(0).setTitle("hoge");이런 코드를 써서 메뉴의 업데이트를 촉진하다

오류가 발생했습니다!!
베타 버전이라 이제 수정되겠지...

추기


2017/01/27 보충:
com.google.android.support:wearable:2.0-beta2 공개
아이콘 위에 표시되지 않은 것은 변화가 없습니다.
베타2의 변경점은 ProGuard 수정, NFC 대응, iOS 대응이다.
2017/02/10 보충:
com.google.android.support:wearable:2.0이 공개되었지만 달라지지 않았습니다...

참고 자료


https://developer.android.com/wear/preview/features/ui-nav-actions.html

좋은 웹페이지 즐겨찾기