Пользовательская анимация для открытия и закрытия навигационного ящика

давайте сделаем что-то напишите. Я видел эту анимацию для навигации : enter image description here

и я хотел бы реализовать это, поскольку это отличный эффект. Я попытался получить эффект, создав пользовательский вид и на ощупь я получаю не менее 50% подобный эффект. я хотел бы реализовать мои методы ondraw() и ontouch() из моего пользовательского представления в представление навигации. Как это делается? Любое одно имеет какие-либо улики? Может ли кто-нибудь дать любую ссылку, которая имеет simlar материал.

Я попытался это :

public class CustomNavigation extends DrawerLayout {

    public CustomNavigation(Context context) {
        super(context);
    }

    public CustomNavigation(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public CustomNavigation(Context context, AttributeSet attrs, int defStyleAttr) {
        super(context, attrs, defStyleAttr);
//        invalidate();
    }
    public void start()
    {
        this.invalidate();
        Log.d("Parth", "start");
    }

    @Override
    public void onDraw(Canvas c) {
        Log.d("Parth", "ondraw");
//        super.onDraw(c);

    }

}

метод on draw не вызывается. почему это так?

из основного действия я делаю объект класса выше и вызываю метод start следующим образом:

CustomNavigation drawer = (CustomNavigation) findViewById(R.id.drawer_layout);
drawer.start();

и это только начальный материал, я также хочу, чтобы реализовать эти :

2 ответов


Итак, наконец, найдя так много, я нашел библиотеку для этого, и вот ссылке к нему. Не знаю, почему его так трудно было найти. Или это была просто моя плохая неделя в любом случае для тех, кто хочет ее использовать, вы можете найти библиотеку здесь. и более того, я также дам реализацию, если вам это нужно:

main_activity.в XML

<?xml version="1.0" encoding="utf-8"?>
<com.mxn.soul.flowingdrawer_core.LeftDrawerLayout
    android:id="@+id/id_drawerlayout"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:clipChildren="false"

    >

    <!--content-->
    <android.support.design.widget.CoordinatorLayout
        android:id="@+id/content"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">
    </android.support.design.widget.CoordinatorLayout>

    <!--menu-->
    <RelativeLayout
        android:layout_width="280dp"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        android:clipChildren="false"
        >
        <com.mxn.soul.flowingdrawer_core.FlowingView
            android:paddingRight="35dp"
            android:id="@+id/sv"
            android:layout_width="match_parent"
            android:layout_height="match_parent"/>
        <FrameLayout
            android:id="@+id/id_container_menu"
            android:layout_width="match_parent"
            android:layout_height="match_parent"
            android:layout_alignParentLeft="true"
            android:layout_marginRight="25dp"

            />
    </RelativeLayout>

</com.mxn.soul.flowingdrawer_core.LeftDrawerLayout>

Main_activity.java

public class MainActivity extends AppCompatActivity{

    private LeftDrawerLayout mLeftDrawerLayout;

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

        mLeftDrawerLayout = (LeftDrawerLayout) findViewById(R.id.id_drawerlayout);

        FragmentManager fm = getSupportFragmentManager();
        MyMenuFragment mMenuFragment = (MyMenuFragment) fm.findFragmentById(R.id.id_container_menu);
        FlowingView mFlowingView = (FlowingView) findViewById(R.id.sv);
        if (mMenuFragment == null) {
            fm.beginTransaction().add(R.id.id_container_menu, mMenuFragment = new MyMenuFragment()).commit();
        }
        mLeftDrawerLayout.setFluidView(mFlowingView);
        mLeftDrawerLayout.setMenuFragment(mMenuFragment);
    }


}

Теперь navigationview рассматривается как фрагмент здесь, поэтому код для фрагмент Здесь :

public class MyMenuFragment extends MenuFragment{
    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View v = inflater.inflate(R.layout.fragment,container,false);

        return setupReveal(v);
    }
}

Так что это в значительной степени. Вы можете поблагодарить этот человек за прекрасную работу.


вялая анимация

вы можете принять помощь от этого ссылке

enter image description here enter image description here

видео пример этой библиотеки находится на этом youtube видео.

на демо приложения можно найти в магазине play.