diff --git a/app/build.gradle b/app/build.gradle index 31c9065..94f2d6e 100644 --- a/app/build.gradle +++ b/app/build.gradle @@ -35,4 +35,7 @@ dependencies { compile 'com.squareup.retrofit2:converter-gson:2.1.0' compile 'com.squareup.okhttp3:logging-interceptor:3.4.1' compile 'io.reactivex:rxandroid:1.2.1' + debugCompile 'com.squareup.leakcanary:leakcanary-android:1.4-beta2' + releaseCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' + testCompile 'com.squareup.leakcanary:leakcanary-android-no-op:1.4-beta2' } diff --git a/app/src/main/java/com/zhangly/zmenu/App.java b/app/src/main/java/com/zhangly/zmenu/App.java index a5db546..e82d25f 100644 --- a/app/src/main/java/com/zhangly/zmenu/App.java +++ b/app/src/main/java/com/zhangly/zmenu/App.java @@ -3,6 +3,8 @@ import android.app.Application; import android.content.Context; +import com.squareup.leakcanary.LeakCanary; + /** * Created by zhangluya on 16/8/15. */ @@ -14,7 +16,7 @@ public class App extends Application { @Override public void onCreate() { super.onCreate(); - + LeakCanary.install(this); sApp = this; sContext = getApplicationContext(); } diff --git a/app/src/main/java/com/zhangly/zmenu/module/menudetails/MenuDetailsFragment.java b/app/src/main/java/com/zhangly/zmenu/module/menudetails/MenuDetailsFragment.java index 41866f4..dfc71aa 100644 --- a/app/src/main/java/com/zhangly/zmenu/module/menudetails/MenuDetailsFragment.java +++ b/app/src/main/java/com/zhangly/zmenu/module/menudetails/MenuDetailsFragment.java @@ -71,7 +71,7 @@ public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, toolbar.setNavigationOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { - getChildFragmentManager().popBackStackImmediate(); + getFragmentManager().popBackStackImmediate(); } }); return view; diff --git a/app/src/main/java/com/zhangly/zmenu/module/menus/HomeFragment.java b/app/src/main/java/com/zhangly/zmenu/module/menus/HomeFragment.java index 89e9175..ccb99aa 100644 --- a/app/src/main/java/com/zhangly/zmenu/module/menus/HomeFragment.java +++ b/app/src/main/java/com/zhangly/zmenu/module/menus/HomeFragment.java @@ -68,7 +68,7 @@ boolean onEditorAction(TextView textView, int id, KeyEvent keyEvent) { final InputMethodManager inputMethodManager = (InputMethodManager) textView.getContext().getSystemService(Context.INPUT_METHOD_SERVICE); inputMethodManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS); String keyword = textView.getText().toString(); - final MenuListFragment menuListFragment = MenuListFragment.newFragment(keyword, true); + final MenuListFragment menuListFragment = MenuListFragment.newFragment(keyword, true, true); new MenusPresenter(menuListFragment, keyword); startFragment(menuListFragment, null, null); return true; diff --git a/app/src/main/java/com/zhangly/zmenu/module/menus/MenuListFragment.java b/app/src/main/java/com/zhangly/zmenu/module/menus/MenuListFragment.java index a09acd4..725fc02 100644 --- a/app/src/main/java/com/zhangly/zmenu/module/menus/MenuListFragment.java +++ b/app/src/main/java/com/zhangly/zmenu/module/menus/MenuListFragment.java @@ -5,11 +5,13 @@ import android.os.Build; import android.os.Bundle; import android.support.annotation.Nullable; +import android.support.v4.app.Fragment; import android.support.v4.app.SharedElementCallback; import android.support.v4.widget.ContentLoadingProgressBar; import android.support.v4.widget.SwipeRefreshLayout; import android.support.v7.widget.LinearLayoutManager; import android.support.v7.widget.RecyclerView; +import android.support.v7.widget.Toolbar; import android.transition.ChangeBounds; import android.transition.ChangeImageTransform; import android.transition.ChangeTransform; @@ -30,6 +32,7 @@ import com.zhangly.zmenu.adapter.MenusAdapter; import com.zhangly.zmenu.api.bean.Menus; import com.zhangly.zmenu.module.menudetails.MenuDetailsFragment; +import com.zhangly.zmenu.utils.StatusBarUtil; import com.zhangly.zmenu.widget.BaseRecyclerView; import java.util.List; @@ -49,20 +52,40 @@ public class MenuListFragment extends BaseFragment implements MenusContract.View private MenusContract.Presenter mPresenter; - public static MenuListFragment newFragment(String menu, boolean isHome) { + public static MenuListFragment newFragment(String menu, boolean isHome, boolean isAddToolbar) { Bundle bundle = new Bundle(); bundle.putString("menu", menu); bundle.putBoolean("flag", isHome); + bundle.putBoolean("isAddToolbar", isAddToolbar); MenuListFragment menuListFragment = new MenuListFragment(); menuListFragment.setArguments(bundle); - return menuListFragment; } + public static MenuListFragment newFragment(String menu, boolean isHome) { + return newFragment(menu, isHome, false); + } + @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { - return inflater.inflate(R.layout.fragment_menu_list, container, false); + final boolean isAddToolbar = getArguments().getBoolean("isAddToolbar"); + int targetLayout = isAddToolbar ? R.layout.fragment_menu_list_toolbar : R.layout.fragment_menu_list; + final View view = inflater.inflate(targetLayout, container, false); + if (isAddToolbar) { + StatusBarUtil.fixStatusBar(view); + Toolbar toolbar = (Toolbar) view.findViewById(R.id.id_tl_toolbar); + getHostActivity().setSupportActionBar(toolbar); + getHostActivity().getSupportActionBar().setDisplayHomeAsUpEnabled(true); + getHostActivity().getSupportActionBar().setTitle(getArguments().getString("menu")); + toolbar.setNavigationOnClickListener(new View.OnClickListener() { + @Override + public void onClick(View v) { + getFragmentManager().popBackStackImmediate(); + } + }); + } + return view; } private int[] getSomeVisibleItemPosition(RecyclerView recyclerView) { @@ -109,13 +132,14 @@ public void onScrollStateChanged(RecyclerView recyclerView, int newState) { @Override public void onItemClick(int position, BaseRecyclerView.BaseViewHolder holder, Menus.Menu item) { final MenuDetailsFragment fragment = MenuDetailsFragment.newFragment(item); + Fragment thisFragment = getParentFragment() == null ? MenuListFragment.this : getParentFragment(); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.LOLLIPOP) { - getParentFragment().setSharedElementReturnTransition(new FragmentHelper.DetailTransition()); + thisFragment.setExitTransition(new Slide()); fragment.setEnterTransition(new Slide()); fragment.setSharedElementEnterTransition(new FragmentHelper.DetailTransition()); - startFragment(getParentFragment() == null ? MenuListFragment.this : getParentFragment(), fragment, holder.getImageView(R.id.id_iv_menu_pic), "MenuPic"); + startFragment(thisFragment, fragment, holder.getImageView(R.id.id_iv_menu_pic), "MenuPic"); } else { - startFragment(getParentFragment() == null ? MenuListFragment.this : getParentFragment(), fragment, null ,null); + startFragment(thisFragment, fragment, null ,null); } } }); diff --git a/app/src/main/res/layout/fragment_menu_list_toolbar.xml b/app/src/main/res/layout/fragment_menu_list_toolbar.xml new file mode 100644 index 0000000..5d550e6 --- /dev/null +++ b/app/src/main/res/layout/fragment_menu_list_toolbar.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + diff --git a/build.gradle b/build.gradle index 609bd06..d762845 100644 --- a/build.gradle +++ b/build.gradle @@ -2,6 +2,7 @@ buildscript { repositories { + mavenCentral() jcenter() } dependencies { @@ -16,6 +17,7 @@ buildscript { allprojects { repositories { + mavenCentral() jcenter() } }