2021. 03. 10

22450 ワード

1.ビューパネル


ビューアとは、左右スクロールで複数の画面を切り替えることができる部品のこと.各画面はタグで構成され、ページアダプタでタグを管理します.SDKが提供するFragmentStatePagerAdapterを使用して実装します.

1)ビューインタフェースをレイアウトに追加する


アクティブなレイアウトにViewPagerラベルを追加します.
<android.support.v4.view.ViewPager
        android:id="@+id/pager"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        ></android.support.v4.view.ViewPager>

2)アダプタ宣言


前述したように、SDKが提供するFragmentStatePagerAdapterを継承するアダプタクラスを定義します.次に、itemsに計画を格納するCustomAdapterの例を示します.この場合、getCountメソッドとgetItemメソッドを上書きする必要があります.
class CustomAdapter extends FragmentStatePagerAdapter{

        ArrayList<Fragment> items = new ArrayList<Fragment>();
        public MoviePagerAdapter(FragmentManager fm) {
            super(fm);
        }

        public void addItem(Fragment item){
            items.add(item);
        }
        @Override
        public int getCount() {
            return items.size();
        }

        @Override
        public Fragment getItem(int position) {
            return items.get(position);
        }
    }
次にActivityでビューアを検索し、setAdapterメソッドを使用してビューアのアダプタを設定します.
	ViewPager pager = (ViewPager) findViewById(R.id.pager);
        pager.setOffscreenPageLimit(3); // 최대 화면 갯수를 3개로

        CustomAdapter adapter = new CustomAdapter(getSupportFragmentManager());

        Fragment1 fragment = new Fragment();
        adapter.addItem(fragment); // 프래그먼트 추가
				'''

        pager.setAdapter(adapter); // 어댑터 설정
もう1つのコンポーネントは、主にビューアとともに使用されます.Title Stripと呼ばれ、現在のビューアのタイトルを表示できます.
xmlファイル、ビューラベルでPagerTitleStripを宣言し、アダプタクラスでgetPageTitleメソッドを上書きします.
public CharSequence getPageTitle(int position) {
            return "페이지 "+position+"/"+items.size();
        }

2.ショートカット


ショートカットとは、画面上で左上隅、アクションバー左側のマークをクリックしたときに表示される画面です.

ショートカットはNavigationViewで実現できます.まずxmlレイアウトファイルにNavigationViewタグを追加し、Javaファイルで機能を実現します.

1)xmlレイアウト

<android.support.v4.widget.DrawerLayout 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"
    android:fitsSystemWindows="true"
    tools:openDrawer="start">
    <android.support.design.widget.NavigationView
        android:id="@+id/nav_view"
        android:layout_width="wrap_content"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:fitsSystemWindows="true"
        app:headerLayout="@layout/nav_header_main"
        app:menu="@menu/activity_main_drawer" />

</android.support.v4.widget.DrawerLayout>
DrawerLayoutにNavigationViewラベルを追加すると、ショートカット画面が作成されます.ショートカットメニューの構成が/res/mメニューフォルダに保存されます.
簡単な例を以下に示します.
<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    tools:showIn="navigation_view">
    <group android:checkableBehavior="single">
        <item
            android:id="@+id/nav0"
            android:icon="@drawable/ic_menu_camera"
            android:title="첫번째" />
        <item
            android:id="@+id/nav1"
            android:icon="@drawable/ic_menu_gallery"
            android:title="두번째" />
        <item
            android:id="@+id/nav2"
            android:icon="@drawable/ic_menu_slideshow"
            android:title="세번째" />
    </group>
</menu>

2.ショートカットアイテム機能の実現


ショートカットメニューをクリックすると、直接呼び出されたonNavigationItemSelectedメソッドが重畳され、機能が実現されます.次の例では、クリックしたメニューごとにonFragmentSelectedメソッドを実行します.
public boolean onNavigationItemSelected(MenuItem item) {
        // Handle navigation view item clicks here.
        int id = item.getItemId();

        if (id == R.id.nav0) {
            onFragmentSelected(0, null);

        } else if (id == R.id.nav1) {
            onFragmentSelected(1, null);
        } else if (id == R.id.nav2) {
            onFragmentSelected(2, null);
        }

        DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
        drawer.closeDrawer(GravityCompat.START);
        return true;
    }