android नेविगेशन ड्रॉवर एनीमेशन समापन करते समय बंद हो रहा है




navigation (2)

मैं अपनी एक परियोजना के लिए नेविगेशन ड्रॉवर को लागू करने जा रहा हूं मैं इसे लागू करने में सक्षम हूं हालांकि नेविगेशन ड्रॉवर में कुछ अंतराल है। कृपया सुझाव दे। यहाँ छवि है

नीचे मेरा कोड है

Home_activity.xml

    <LinearLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical">

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="0dp"
            android:layout_weight="1"
            android:background="@drawable/image_login">



            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="?attr/actionBarSize"
                android:theme="@style/ThemeOverlay.AppCompat.Dark.ActionBar"
                app:popupTheme="@style/ThemeOverlay.AppCompat.Light" />


            <RelativeLayout
                android:id="@+id/searchBox"
                android:layout_width="match_parent"
                android:layout_height="45dp"
                android:layout_below="@+id/toolbar"
                android:layout_marginLeft="20dp"
                android:layout_marginRight="20dp"
                android:layout_marginTop="10dp"
                android:background="#ffffff">

                <TextView
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_centerVertical="true"
                    android:layout_marginLeft="10dp"
                    android:text="Search a Property"
                    android:textColor="#b8bcc0"
                    android:textSize="14sp" />

                <ImageView
                    android:id="@+id/imageView"
                    android:layout_width="20dp"
                    android:layout_height="20dp"
                    android:layout_alignParentRight="true"
                    android:layout_centerVertical="true"
                    android:layout_marginRight="10dp"
                    android:src="@drawable/icon_search" />

            </RelativeLayout>


            <RelativeLayout
                android:id="@+id/box"
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:layout_below="@+id/searchBox"
                android:gravity="center">


                <ImageView
                    android:id="@+id/buyRentImage"
                    android:layout_width="110dp"
                    android:layout_height="110dp"
                    android:layout_marginBottom="2dp"
                    android:layout_marginRight="1dp"
                    android:src="@drawable/image_buy_rent" />


                <ImageView
                    android:id="@+id/applyLoanImage"
                    android:layout_width="110dp"
                    android:layout_height="110dp"
                    android:layout_marginRight="3dp"
                    android:layout_toRightOf="@+id/buyRentImage"
                    android:src="@drawable/image_apply_for_loan" />

                <ImageView
                    android:id="@+id/newProjectImage"
                    android:layout_width="110dp"
                    android:layout_height="110dp"
                    android:layout_marginRight="1dp"
                    android:layout_below="@+id/buyRentImage"
                    android:src="@drawable/image_new_projects" />

                <ImageView
                    android:id="@+id/postPropertyImage"
                    android:layout_width="110dp"
                    android:layout_height="110dp"
                    android:layout_marginRight="3dp"
                    android:layout_below="@+id/buyRentImage"
                    android:layout_toRightOf="@+id/newProjectImage"
                    android:src="@drawable/image_post_my_property" />


            </RelativeLayout>

        </RelativeLayout>

        <RelativeLayout
            android:layout_width="match_parent"
            android:layout_height="70dp">

            <RelativeLayout
                android:id="@+id/homeiconImage"
                android:layout_width="55dp"
                android:layout_height="55dp"
                android:layout_marginLeft="20dp"
                android:layout_centerVertical="true"
                android:background="@drawable/circle_blue"
                android:gravity="center">

                <ImageView
                    android:layout_width="30dp"
                    android:layout_height="30dp"
                    android:src="@drawable/icon_verified_property" />

            </RelativeLayout>

            <TextView
                android:id="@+id/totalProperty"
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_marginLeft="25dp"
                android:layout_marginTop="10dp"
                android:layout_toRightOf="@id/homeiconImage"
                android:text="300+"
                android:textColor="#008dd5"
                android:textSize="20sp"
                android:textStyle="bold" />

            <TextView
                android:layout_width="wrap_content"
                android:layout_height="wrap_content"
                android:layout_below="@+id/totalProperty"
                android:layout_marginLeft="25dp"
                android:layout_toRightOf="@id/homeiconImage"
                android:text="VARIFIED PROPERTIES"
                android:textColor="#3d3e40"
                android:textSize="16sp" />

            <ImageView
                android:layout_width="35dp"
                android:layout_height="35dp"
                android:layout_alignParentRight="true"
                android:layout_centerVertical="true"
                android:layout_marginRight="4dp"
                android:src="@drawable/icon_next" />


        </RelativeLayout>

        <View
            android:layout_width="match_parent"
            android:layout_height="5dp"
            android:layout_alignParentBottom="true"
            android:background="#008dd5" />


    </LinearLayout>


    <fragment
        android:id="@+id/fragment_navigation_drawer"
        android:name="com.androidmobile.thanehomes.thanehomes.activities.home.NavigationFragment"
        android:layout_width="@dimen/nav_drawer_width"
        android:layout_height="match_parent"
        android:layout_gravity="start"
        tools:layout="@layout/fragment_navigation" />

Home.java

public class Home extends AppCompatActivity implements NavigationFragment.FragmentDrawerListener {
    Toolbar toolbar;
    RelativeLayout box, searchBox;
    ImageView buyRentImg, applyLoanImg, newProjectImg, postProjectImg;
    TextView buyRentTxt, postPropertyTxt;
    Menu myMenu;
    int settleCount;
    private NavigationFragment drawerFragment;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_home);
        settleCount = 1;
        toolbar = (Toolbar) findViewById(R.id.toolbar);
        searchBox = (RelativeLayout) findViewById(R.id.searchBox);
        setSupportActionBar(toolbar);
        getSupportActionBar().setTitle(" Thanehomes");
        getSupportActionBar().setIcon(R.drawable.ic_logo);
        box = (RelativeLayout) findViewById(R.id.box);
        box.setRotation(45.0f);
        searchBox.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent searchIntent = new Intent(Home.this, SearchProperty.class);
                startActivity(searchIntent);
            }
        });
        drawerFragment = (NavigationFragment)
                getSupportFragmentManager().findFragmentById(R.id.fragment_navigation_drawer);
        drawerFragment.setUp(R.id.fragment_navigation_drawer, (DrawerLayout) findViewById(R.id.drawerLayout), toolbar);
        drawerFragment.setDrawerListener(this);
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        myMenu = menu;
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.home_menu, menu);
        MenuItem item = myMenu.findItem(R.id.notification);
        MenuItemCompat.setActionView(item, R.layout.update_count);
        View count = myMenu.findItem(R.id.notification).getActionView();
        TextView t = (TextView) count.findViewById(R.id.count);
        if (settleCount < 1) {
            t.setVisibility(View.GONE);
        } else {
            t.setVisibility(View.VISIBLE);
            t.setText("" + settleCount);
        }
        count.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
               // Toast.makeText(getApplicationContext(), "Click", Toast.LENGTH_SHORT).show();
                Intent notificationIntent = new Intent(Home.this, NotificationList.class);
                startActivity(notificationIntent);
            }
        });
        return true;
    }
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        // Handle item selection
        switch (item.getItemId()) {
            default:
                return super.onOptionsItemSelected(item);
        }
    }
    @Override
    public void onDrawerItemSelected(View view, int position) {
        Toast.makeText(getApplicationContext(), position + "", Toast.LENGTH_SHORT).show();
    }
}

NavigationFragment.java

public class NavigationFragment extends Fragment {

    private static String TAG = NavigationFragment.class.getSimpleName();

    private RecyclerView recyclerView;
    private ActionBarDrawerToggle mDrawerToggle;
    private DrawerLayout mDrawerLayout;
    private NavigationDrawerAdapter adapter;
    private View containerView;
    private static String[] titles = null;
    private FragmentDrawerListener drawerListener;

    public NavigationFragment() {

    }

    public void setDrawerListener(FragmentDrawerListener listener) {
        this.drawerListener = listener;
    }

    public static List<NavDrawerItem> getData() {
        List<NavDrawerItem> data = new ArrayList<>();


        // preparing navigation drawer items
        for (int i = 0; i < titles.length; i++) {
            NavDrawerItem navItem = new NavDrawerItem();
            navItem.setTitle(titles[i]);
            data.add(navItem);
        }
        return data;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        // drawer labels
        titles = getActivity().getResources().getStringArray(R.array.nav_drawer_labels);
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        // Inflating view layout
        View layout = inflater.inflate(R.layout.fragment_navigation, container, false);
        recyclerView = (RecyclerView) layout.findViewById(R.id.drawerList);

        adapter = new NavigationDrawerAdapter(getActivity(), getData());
        recyclerView.setAdapter(adapter);
        recyclerView.setLayoutManager(new LinearLayoutManager(getActivity()));
        recyclerView.addOnItemTouchListener(new RecyclerTouchListener(getActivity(), recyclerView, new ClickListener() {
            @Override
            public void onClick(View view, int position) {
                drawerListener.onDrawerItemSelected(view, position);
                mDrawerLayout.closeDrawer(containerView);
            }

            @Override
            public void onLongClick(View view, int position) {

            }
        }));

        return layout;
    }


    public void setUp(int fragmentId, DrawerLayout drawerLayout, final Toolbar toolbar) {
        containerView = getActivity().findViewById(fragmentId);
        mDrawerLayout = drawerLayout;
        mDrawerToggle = new ActionBarDrawerToggle(getActivity(), drawerLayout, toolbar, R.string.drawer_open, R.string.drawer_close) {
            @Override
            public void onDrawerOpened(View drawerView) {
                super.onDrawerOpened(drawerView);
                getActivity().invalidateOptionsMenu();
            }

            @Override
            public void onDrawerClosed(View drawerView) {
                super.onDrawerClosed(drawerView);
                getActivity().invalidateOptionsMenu();
            }

            @Override
            public void onDrawerSlide(View drawerView, float slideOffset) {
                super.onDrawerSlide(drawerView, slideOffset);
                toolbar.setAlpha(1 - slideOffset / 2);
            }
        };

        mDrawerLayout.addDrawerListener(mDrawerToggle);
        mDrawerLayout.post(new Runnable() {
            @Override
            public void run() {
                mDrawerToggle.syncState();
            }
        });

    }

    public static interface ClickListener {
        public void onClick(View view, int position);

        public void onLongClick(View view, int position);
    }

    static class RecyclerTouchListener implements RecyclerView.OnItemTouchListener {

        private GestureDetector gestureDetector;
        private ClickListener clickListener;

        public RecyclerTouchListener(Context context, final RecyclerView recyclerView, final ClickListener clickListener) {
            this.clickListener = clickListener;
            gestureDetector = new GestureDetector(context, new GestureDetector.SimpleOnGestureListener() {
                @Override
                public boolean onSingleTapUp(MotionEvent e) {
                    return true;
                }

                @Override
                public void onLongPress(MotionEvent e) {
                    View child = recyclerView.findChildViewUnder(e.getX(), e.getY());
                    if (child != null && clickListener != null) {
                        clickListener.onLongClick(child, recyclerView.getChildAdapterPosition(child));
                    }
                }
            });
        }

        @Override
        public boolean onInterceptTouchEvent(RecyclerView rv, MotionEvent e) {

            View child = rv.findChildViewUnder(e.getX(), e.getY());
            if (child != null && clickListener != null && gestureDetector.onTouchEvent(e)) {
                clickListener.onClick(child, rv.getChildPosition(child));
            }
            return false;
        }

        @Override
        public void onTouchEvent(RecyclerView rv, MotionEvent e) {
        }

        @Override
        public void onRequestDisallowInterceptTouchEvent(boolean disallowIntercept) {

        }


    }

    public interface FragmentDrawerListener {
        public void onDrawerItemSelected(View view, int position);
    }
}

यदि नेविगेशन ड्रॉवर खोला जा रहा है, तो इसका मतलब है कि आप अपने नेविगेशन ड्रॉवर में कुछ संसाधन गहन कार्य कर रहे हैं

यदि इसे बंद करते समय लांग आता है तो इसका मतलब है कि आप नेविगेशन दराज के माध्यम से दिखाए गए टुकड़े ने नेविगेशन बंद होने के करीब समय लगाया है।

आपकी समस्या यह है कि आप उस टुकड़े में कुछ भारी कार्य कर रहे हैं जिसे आप नेविवर ड्रॉवर के माध्यम से खोल रहे हैं


पूरी तरह से निश्चित नहीं है लेकिन मुझे नेविगेशन ड्रॉवर पर कुछ कारणों से समस्याएं आती हैं जब मैं समर्थन स्क्रीन परिभाषित करता हूं और यह स्क्रीन संगतता मोड में चल रहा है।

हालांकि एक्शनबार ड्रॉवर टॉगल द्वारा बर्गर मेनू आइकन के अपडेट के कारण ऐसा लग रहा था।

आप जांच कर सकते हैं कि क्या समस्या जब आप एक खाली क्रियान्वयन ( supress भी सुपर कॉल) प्रदान करते हैं पर छोड़ देता है onDrawerSlide

@Override
public void onDrawerSlide(View drawerView, float slideOffset) {
}

अगर यह बेहतर दिखता है तो आप उस क्रिया को एक अलग थ्रेड में करने का प्रयास कर सकते हैं (यदि यह UI सुविधाएं आपके लिए आवश्यक हैं)।







navigation