-
Notifications
You must be signed in to change notification settings - Fork 173
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
18 changed files
with
260 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
35 changes: 35 additions & 0 deletions
35
app/src/main/java/pl/michalz/hideonscrollexample/ScrollingFABBehavior.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,35 @@ | ||
package pl.michalz.hideonscrollexample; | ||
|
||
import android.content.Context; | ||
import android.support.design.widget.AppBarLayout; | ||
import android.support.design.widget.CoordinatorLayout; | ||
import android.support.design.widget.FloatingActionButton; | ||
import android.util.AttributeSet; | ||
import android.view.View; | ||
|
||
public class ScrollingFABBehavior extends FloatingActionButton.Behavior { | ||
private int toolbarHeight; | ||
|
||
public ScrollingFABBehavior(Context context, AttributeSet attrs) { | ||
super(); | ||
this.toolbarHeight = Utils.getToolbarHeight(context); | ||
} | ||
|
||
@Override | ||
public boolean layoutDependsOn(CoordinatorLayout parent, FloatingActionButton fab, View dependency) { | ||
return super.layoutDependsOn(parent, fab, dependency) || (dependency instanceof AppBarLayout); | ||
} | ||
|
||
@Override | ||
public boolean onDependentViewChanged(CoordinatorLayout parent, FloatingActionButton fab, View dependency) { | ||
boolean returnValue = super.onDependentViewChanged(parent, fab, dependency); | ||
if (dependency instanceof AppBarLayout) { | ||
CoordinatorLayout.LayoutParams lp = (CoordinatorLayout.LayoutParams) fab.getLayoutParams(); | ||
int fabBottomMargin = lp.bottomMargin; | ||
int distanceToScroll = fab.getHeight() + fabBottomMargin; | ||
float ratio = (float)dependency.getY()/(float)toolbarHeight; | ||
fab.setTranslationY(-distanceToScroll * ratio); | ||
} | ||
return returnValue; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
75 changes: 75 additions & 0 deletions
75
app/src/main/java/pl/michalz/hideonscrollexample/activity/partthree/PartThreeActivity.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,75 @@ | ||
package pl.michalz.hideonscrollexample.activity.partthree; | ||
|
||
import android.os.Bundle; | ||
import android.support.design.widget.TabLayout; | ||
import android.support.v4.app.Fragment; | ||
import android.support.v4.app.FragmentManager; | ||
import android.support.v4.app.FragmentPagerAdapter; | ||
import android.support.v4.view.ViewPager; | ||
import android.support.v7.app.AppCompatActivity; | ||
import android.support.v7.widget.Toolbar; | ||
import pl.michalz.hideonscrollexample.R; | ||
import pl.michalz.hideonscrollexample.fragment.PartThreeFragment; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public class PartThreeActivity extends AppCompatActivity { | ||
|
||
|
||
@Override | ||
protected void onCreate(Bundle savedInstanceState) { | ||
setTheme(R.style.AppThemeBlue); | ||
super.onCreate(savedInstanceState); | ||
setContentView(R.layout.activity_part_three); | ||
|
||
initToolbar(); | ||
initViewPagerAndTabs(); | ||
} | ||
|
||
private void initToolbar() { | ||
Toolbar mToolbar = (Toolbar) findViewById(R.id.toolbar); | ||
setSupportActionBar(mToolbar); | ||
setTitle(getString(R.string.app_name)); | ||
mToolbar.setTitleTextColor(getResources().getColor(android.R.color.white)); | ||
} | ||
|
||
private void initViewPagerAndTabs() { | ||
ViewPager viewPager = (ViewPager) findViewById(R.id.viewPager); | ||
PagerAdapter pagerAdapter = new PagerAdapter(getSupportFragmentManager()); | ||
pagerAdapter.addFragment(PartThreeFragment.createInstance(20), getString(R.string.tab_1)); | ||
pagerAdapter.addFragment(PartThreeFragment.createInstance(4), getString(R.string.tab_2)); | ||
viewPager.setAdapter(pagerAdapter); | ||
TabLayout tabLayout = (TabLayout) findViewById(R.id.tabLayout); | ||
tabLayout.setupWithViewPager(viewPager); | ||
} | ||
|
||
static class PagerAdapter extends FragmentPagerAdapter { | ||
|
||
private final List<Fragment> fragmentList = new ArrayList<>(); | ||
private final List<String> fragmentTitleList = new ArrayList<>(); | ||
|
||
public PagerAdapter(FragmentManager fragmentManager) { | ||
super(fragmentManager); | ||
} | ||
|
||
public void addFragment(Fragment fragment, String title) { | ||
fragmentList.add(fragment); | ||
fragmentTitleList.add(title); | ||
} | ||
|
||
@Override | ||
public Fragment getItem(int position) { | ||
return fragmentList.get(position); | ||
} | ||
|
||
@Override | ||
public int getCount() { | ||
return fragmentList.size(); | ||
} | ||
@Override | ||
public CharSequence getPageTitle(int position) { | ||
return fragmentTitleList.get(position); | ||
} | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
55 changes: 55 additions & 0 deletions
55
app/src/main/java/pl/michalz/hideonscrollexample/fragment/PartThreeFragment.java
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,55 @@ | ||
package pl.michalz.hideonscrollexample.fragment; | ||
|
||
import android.os.Bundle; | ||
import android.support.annotation.Nullable; | ||
import android.support.v4.app.Fragment; | ||
import android.support.v7.widget.LinearLayoutManager; | ||
import android.support.v7.widget.RecyclerView; | ||
import android.view.LayoutInflater; | ||
import android.view.View; | ||
import android.view.ViewGroup; | ||
import pl.michalz.hideonscrollexample.R; | ||
import pl.michalz.hideonscrollexample.adapter.parttwo.RecyclerAdapter; | ||
|
||
import java.util.ArrayList; | ||
import java.util.List; | ||
|
||
public class PartThreeFragment extends Fragment { | ||
|
||
public final static String ITEMS_COUNT_KEY = "PartThreeFragment$ItemsCount"; | ||
|
||
public static PartThreeFragment createInstance(int itemsCount) { | ||
PartThreeFragment partThreeFragment = new PartThreeFragment(); | ||
Bundle bundle = new Bundle(); | ||
bundle.putInt(ITEMS_COUNT_KEY, itemsCount); | ||
partThreeFragment.setArguments(bundle); | ||
return partThreeFragment; | ||
} | ||
|
||
@Nullable | ||
@Override | ||
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { | ||
RecyclerView recyclerView = (RecyclerView) inflater.inflate( | ||
R.layout.fragment_part_three, container, false); | ||
setupRecyclerView(recyclerView); | ||
return recyclerView; | ||
} | ||
|
||
private void setupRecyclerView(RecyclerView recyclerView) { | ||
recyclerView.setLayoutManager(new LinearLayoutManager(getActivity())); | ||
RecyclerAdapter recyclerAdapter = new RecyclerAdapter(createItemList()); | ||
recyclerView.setAdapter(recyclerAdapter); | ||
} | ||
|
||
private List<String> createItemList() { | ||
List<String> itemList = new ArrayList<>(); | ||
Bundle bundle = getArguments(); | ||
if(bundle!=null) { | ||
int itemsCount = bundle.getInt(ITEMS_COUNT_KEY); | ||
for (int i = 0; i < itemsCount; i++) { | ||
itemList.add("Item " + i); | ||
} | ||
} | ||
return itemList; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,40 @@ | ||
<?xml version="1.0" encoding="utf-8"?> | ||
<android.support.design.widget.CoordinatorLayout xmlns:android="http://schemas.android.com/apk/res/android" | ||
xmlns:app="http://schemas.android.com/apk/res-auto" | ||
android:id="@+id/coordinatorLayout" | ||
android:layout_width="match_parent" | ||
android:layout_height="match_parent"> | ||
<android.support.design.widget.AppBarLayout | ||
android:id="@+id/appBarLayout" | ||
android:layout_width="match_parent" | ||
android:layout_height="wrap_content"> | ||
<android.support.v7.widget.Toolbar | ||
android:id="@+id/toolbar" | ||
android:layout_width="match_parent" | ||
android:layout_height="?attr/actionBarSize" | ||
android:background="?attr/colorPrimary" | ||
app:layout_scrollFlags="scroll|enterAlways" /> | ||
<android.support.design.widget.TabLayout | ||
android:id="@+id/tabLayout" | ||
android:layout_width="match_parent" | ||
android:layout_height="wrap_content" | ||
app:tabTextColor="@android:color/white" | ||
app:tabSelectedTextColor="@android:color/white" | ||
app:tabIndicatorColor="@android:color/white" | ||
app:tabIndicatorHeight="6dp"/> | ||
</android.support.design.widget.AppBarLayout> | ||
<android.support.v4.view.ViewPager | ||
android:id="@+id/viewPager" | ||
android:layout_width="match_parent" | ||
android:layout_height="match_parent" | ||
app:layout_behavior="@string/appbar_scrolling_view_behavior"/> | ||
<android.support.design.widget.FloatingActionButton | ||
android:id="@+id/fabButton" | ||
android:layout_width="wrap_content" | ||
android:layout_height="wrap_content" | ||
android:layout_gravity="end|bottom" | ||
android:layout_margin="@dimen/fab_margin" | ||
android:src="@drawable/ic_favorite_outline_white_24dp" | ||
app:borderWidth="0dp" | ||
app:layout_behavior="pl.michalz.hideonscrollexample.ScrollingFABBehavior"/> | ||
</android.support.design.widget.CoordinatorLayout> |
Oops, something went wrong.