web-dev-qa-db-ja.com

ナビゲーションドロワーの遷移android

このタイプの移行を実現する方法を考えている人。 Navagationドロワーを開くと、フルスクリーンでこのようなアニメーションが表示されます。 reside men も調べましたが、ここではメニューが事前に定義されています。

私もNavigationDrawerで試しましたが、成功しませんでした。

   drawer.addDrawerListener(new DrawerLayout.DrawerListener() {
        @Override
        public void onDrawerSlide(View drawerView, float slideOffset) {
            float moveFactor = (linearLayout.getWidth() * slideOffset);

            float min = 0.9f;
            float max = 1.0f;
            float scaleFactor = (max - ((max - min) * slideOffset));
            if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB)
            {
                linearLayout.setTranslationX(moveFactor);
                linearLayout.setScaleX(scaleFactor);
                linearLayout.setScaleY(scaleFactor);
            }
            else
            {
                AnimationSet animSet = new AnimationSet(true);


                TranslateAnimation anim = new TranslateAnimation(lastTranslate, moveFactor, 0.0f, 0.0f);
                anim.setDuration(0);
                anim.setFillAfter(true);
                animSet.addAnimation(anim);
                ScaleAnimation scale = new ScaleAnimation(1.15f, 1.0f, 1.15f, 1.0f);
                scale.setDuration(10);
                scale.setFillAfter(true);
                animSet.addAnimation(scale);

                drawerView.startAnimation(animSet);

                lastTranslate = moveFactor;
            }
        }

        @Override
        public void onDrawerOpened(View drawerView) {

        }

        @Override
        public void onDrawerClosed(View drawerView) {

        }

        @Override
        public void onDrawerStateChanged(int newState) {

        }
    });

よろしくお願いします

Animation in navigation drawer

6
AMAN SINGH

最後に私はこれを通して私の答えを得ました 元の投稿へのリンク 。こちらをご覧ください

<?xml version="1.0" encoding="utf-8"?>
<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:context="test.pyramidions.com.dynamicview2.MainActivity"
tools:openDrawer="start">


<RelativeLayout
    Android:id="@+id/holder"
    Android:layout_width="match_parent"
    Android:background="@drawable/shadow"
    Android:layout_height="match_parent"
    Android:orientation="vertical">


    <LinearLayout
        Android:id="@+id/content"
        Android:layout_width="match_parent"
        Android:background="@color/colorAccent"
        Android:layout_height="match_parent"
        Android:orientation="vertical">

        <include
            Android:id="@+id/toolbar"
            layout="@layout/toolbar" />


        <Android.support.v4.view.ViewPager
            Android:id="@+id/pager"
            Android:layout_width="match_parent"
            Android:layout_height="match_parent"
            Android:layout_weight="1" />

    </LinearLayout>
</RelativeLayout>


<Android.support.design.widget.NavigationView
    Android:id="@+id/nav_view"
    Android:layout_width="wrap_content"
    Android:layout_height="match_parent"
    Android:background="@Android:color/transparent"
    Android:layout_gravity="start"
    app:headerLayout="@layout/nav_header_main"
    app:menu="@menu/drawer_menu" />

 </Android.support.v4.widget.DrawerLayout>

MainActivity.Java以下をご覧ください

        public class MainActivity extends AppCompatActivity {
public TabsPagerAdapter tabsPagerAdapter;
public static ViewPager pager;
int Numboftabs = 2;
Toolbar toolbar;
public NavigationView navigationView;
public DrawerLayout drawer;
View holderView, contentView;
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    navigationView = (NavigationView) findViewById(R.id.nav_view);
    holderView = findViewById(R.id.holder);
    contentView = findViewById(R.id.content);
    tabsPagerAdapter = new TabsPagerAdapter(getSupportFragmentManager(), Numboftabs);
    pager = (ViewPager) findViewById(R.id.pager);
    pager.setAdapter(tabsPagerAdapter);
    toolbar.setNavigationIcon(new DrawerArrowDrawable(this));
    toolbar.setNavigationOnClickListener(new View.OnClickListener() {
                                             @Override
                                             public void onClick(View v) {
                                                 if (drawer.isDrawerOpen(navigationView)) {
                                                     drawer.closeDrawer(navigationView);
                                                 } else {
                                                     drawer.openDrawer(navigationView);
                                                 }
                                             }
                                         }
    );


    drawer.setScrimColor(Color.TRANSPARENT);
    drawer.addDrawerListener(new DrawerLayout.SimpleDrawerListener() {
                                 @Override
                                 public void onDrawerSlide(View drawer, float slideOffset) {


                                     contentView.setX(navigationView.getWidth() * slideOffset);
                                     RelativeLayout.LayoutParams lp =
                                             (RelativeLayout.LayoutParams) contentView.getLayoutParams();
                                     lp.height = drawer.getHeight() -
                                             (int) (drawer.getHeight() * slideOffset * 0.3f);
                                     lp.topMargin = (drawer.getHeight() - lp.height) / 2;
                                     contentView.setLayoutParams(lp);
                                 }

                                 @Override
                                 public void onDrawerClosed(View drawerView) {
                                 }
                             }
    );

}
5
AMAN SINGH

ドロワーの動作は、ライブラリの使用Android DrawerLayout Supportライブラリを親クラス[移行が容易]]であり、ドロワーをスライドさせながらビューを移動したり、ビューの高さをスケーリングしたりするなど、ドロワーに追加の動作を提供します。

現在のプロジェクトでAndroid DrawerLayout Supportライブラリを使用していて、エフェクトにちょっと退屈している場合は、レイアウトコードを変更して、アニメーション/エフェクトに必要なメソッドを呼び出すだけです。

githubコードをチェックしてください

Gradle

dependencies {
   implementation 'com.infideap.drawerbehavior:drawer-behavior:0.1.5'
}

gradleが同期できない場合は、この行をプロジェクトレベルのgradleに含めることができます。

repositories {
 maven{
   url "https://dl.bintray.com/infideap2/Drawer-Behavior"
 }
}
0
Prashant Arvind