package com.example.development.androidmsample.fragments;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.design.widget.AppBarLayout;
import android.support.design.widget.CoordinatorLayout;
import android.support.design.widget.FloatingActionButton;
import android.support.design.widget.Snackbar;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.helper.ItemTouchHelper;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import com.example.development.androidmsample.R;
import com.example.development.androidmsample.adapter.SampleAdapter;
import com.example.development.androidmsample.utils.Constants;
import com.example.development.androidmsample.utils.behaviors.ScrollAwareFABBehavior;
import com.example.development.androidmsample.utils.helper.SimpleItemTouchHelperCallback;
import butterknife.Bind;
public class ToolbarFragment extends BaseFragment implements SampleAdapter.OnStartDragListener {
private ItemTouchHelper mItemTouchHelper;
@Bind(R.id.recyclerview)
RecyclerView mRecyclerView;
@Bind(R.id.appbar)
AppBarLayout mAppBarLayout;
@Bind(R.id.fab)
FloatingActionButton mFab;
public static ToolbarFragment newInstance() {
return new ToolbarFragment();
}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
protected int getLayout() {
return R.layout.toolbar_layout;
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
setupToolbar(getString(R.string.toolbarLayout));
setupRecyclerView();
mFab.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Snackbar.make(mRecyclerView, "Snackbar With Action!", Snackbar.LENGTH_SHORT)
.setAction("Undo", new View.OnClickListener() {
@Override
public void onClick(View v) {
}
})
.show();
}
});
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
getActivity().getMenuInflater().inflate(R.menu.toolbar_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
//mAppBarLayout.addOnOffsetChangedListener(null);
AppBarLayout.LayoutParams toolbarParams =
(AppBarLayout.LayoutParams) mToolbar.getLayoutParams();
CoordinatorLayout.LayoutParams fabParams = (CoordinatorLayout.LayoutParams)mFab.getLayoutParams();
switch (item.getItemId()) {
case R.id.menu_toolbar_pin:
fabParams.setBehavior(new ScrollAwareFABBehavior(Constants.NONE));
mFab.setLayoutParams(fabParams);
toolbarParams.setScrollFlags(0);
getActivity().supportInvalidateOptionsMenu();
case R.id.menu_scroll:
fabParams.setBehavior(new ScrollAwareFABBehavior(Constants.NONE));
mFab.setLayoutParams(fabParams);
toolbarParams.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL);
getActivity().supportInvalidateOptionsMenu();
return true;
case R.id.menu_scroll_enteralways:
fabParams.setBehavior(new ScrollAwareFABBehavior(Constants.NONE));
mFab.setLayoutParams(fabParams);
toolbarParams.setScrollFlags(AppBarLayout.LayoutParams.SCROLL_FLAG_SCROLL | AppBarLayout.LayoutParams.SCROLL_FLAG_ENTER_ALWAYS);
getActivity().supportInvalidateOptionsMenu();
return true;
case R.id.menu_snakbar_fab_scale_anim:
fabParams.setBehavior(new ScrollAwareFABBehavior(Constants.SCALE));
mFab.setLayoutParams(fabParams);
return true;
case R.id.menu_snakbar_fab_translate_anim:
fabParams.setBehavior(new ScrollAwareFABBehavior(Constants.TRANSLATE));
mFab.setLayoutParams(fabParams);
// case R.id.menu_scroll_rotate:
// mFab.setLayoutParams(null);
// mAppBarLayout.addOnOffsetChangedListener(new AppBarLayout.OnOffsetChangedListener() {
// @Override
// public void onOffsetChanged(AppBarLayout appBarLayout, int i) {
//// float deltaY = mFab.getHeight()*1.5f;
//// if(i <0)animFab(deltaY);
//// else animFab(-deltaY);
// }
// });
return true;
default:
return super.onOptionsItemSelected(item);
}
}
private void animFab(final float deltaY){
// ViewCompat.animate(mFab)
// .translationYBy(deltaY)
// .withLayer()
// .start();
}
private void setupRecyclerView() {
mRecyclerView.setHasFixedSize(true);
mRecyclerView.setLayoutManager(new LinearLayoutManager(mRecyclerView.getContext()));
SampleAdapter adapter=new SampleAdapter(getActivity(),this);
mRecyclerView.setAdapter(adapter);
ItemTouchHelper.Callback callback = new SimpleItemTouchHelperCallback(adapter);
mItemTouchHelper = new ItemTouchHelper(callback);
mItemTouchHelper.attachToRecyclerView(mRecyclerView);
}
@Override
public void onStartDrag(RecyclerView.ViewHolder viewHolder) {
mItemTouchHelper.startDrag(viewHolder);
}
}