Skip to content

Commit

Permalink
part 3
Browse files Browse the repository at this point in the history
  • Loading branch information
mzgreen committed Jun 23, 2015
1 parent e3fbfb0 commit 7c6c010
Show file tree
Hide file tree
Showing 18 changed files with 260 additions and 19 deletions.
13 changes: 7 additions & 6 deletions app/build.gradle
Original file line number Diff line number Diff line change
@@ -1,13 +1,13 @@
apply plugin: 'com.android.application'

android {
compileSdkVersion 21
buildToolsVersion "21.1.2"
compileSdkVersion 22
buildToolsVersion "22.0.1"

defaultConfig {
applicationId "pl.michalz.hideonscrollexample"
minSdkVersion 14
targetSdkVersion 21
targetSdkVersion 22
versionCode 1
versionName "1.0"
}
Expand All @@ -21,7 +21,8 @@ android {

dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
compile 'com.android.support:appcompat-v7:21.0.3'
compile "com.android.support:recyclerview-v7:21.0.0"
compile 'com.android.support:cardview-v7:21.0.3'
compile 'com.android.support:appcompat-v7:22.2.0'
compile 'com.android.support:recyclerview-v7:22.2.0'
compile 'com.android.support:cardview-v7:22.2.0'
compile 'com.android.support:design:22.2.0'
}
2 changes: 2 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@
android:name=".activity.partone.PartOneActivity"/>
<activity
android:name=".activity.parttwo.PartTwoActivity"/>
<activity
android:name=".activity.partthree.PartThreeActivity"/>
</application>

</manifest>
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;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,20 @@

import android.content.Intent;
import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.Toolbar;
import android.view.View;
import android.widget.Button;
import pl.michalz.hideonscrollexample.R;
import pl.michalz.hideonscrollexample.activity.partone.PartOneActivity;
import pl.michalz.hideonscrollexample.activity.partthree.PartThreeActivity;
import pl.michalz.hideonscrollexample.activity.parttwo.PartTwoActivity;

public class MainActivity extends ActionBarActivity implements View.OnClickListener {
public class MainActivity extends AppCompatActivity implements View.OnClickListener {

private Button partOneButton;
private Button partTwoButton;
private Button partThreeButton;

@Override
protected void onCreate(Bundle savedInstanceState) {
Expand All @@ -24,9 +26,11 @@ protected void onCreate(Bundle savedInstanceState) {

partOneButton = (Button) findViewById(R.id.partOneButton);
partTwoButton = (Button) findViewById(R.id.partTwoButton);
partThreeButton = (Button) findViewById(R.id.partThreeButton);

partOneButton.setOnClickListener(this);
partTwoButton.setOnClickListener(this);
partThreeButton.setOnClickListener(this);
}

private void initToolbar() {
Expand All @@ -39,8 +43,10 @@ private void initToolbar() {
public void onClick(View v) {
if(v.equals(partOneButton)) {
startActivity(PartOneActivity.class);
} else {
} else if(v.equals(partTwoButton)) {
startActivity(PartTwoActivity.class);
} else {
startActivity(PartThreeActivity.class);
}
}

Expand Down
Original file line number Diff line number Diff line change
@@ -1,22 +1,22 @@
package pl.michalz.hideonscrollexample.activity.partone;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
import android.view.animation.AccelerateInterpolator;
import android.view.animation.DecelerateInterpolator;
import android.widget.FrameLayout;
import android.widget.ImageButton;
import pl.michalz.hideonscrollexample.listener.partone.HidingScrollListener;
import pl.michalz.hideonscrollexample.R;
import pl.michalz.hideonscrollexample.adapter.partone.RecyclerAdapter;
import pl.michalz.hideonscrollexample.listener.partone.HidingScrollListener;

import java.util.ArrayList;
import java.util.List;

public class PartOneActivity extends ActionBarActivity {
public class PartOneActivity extends AppCompatActivity {

private Toolbar mToolbar;
private ImageButton mFabButton;
Expand Down Expand Up @@ -45,7 +45,7 @@ private void initRecyclerView() {
RecyclerAdapter recyclerAdapter = new RecyclerAdapter(createItemList());
recyclerView.setAdapter(recyclerAdapter);

recyclerView.setOnScrollListener(new HidingScrollListener() {
recyclerView.addOnScrollListener(new HidingScrollListener() {
@Override
public void onHide() {
hideViews();
Expand Down
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);
}
}
}
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
package pl.michalz.hideonscrollexample.activity.parttwo;

import android.os.Bundle;
import android.support.v7.app.ActionBarActivity;
import android.support.v7.app.AppCompatActivity;
import android.support.v7.widget.LinearLayoutManager;
import android.support.v7.widget.RecyclerView;
import android.support.v7.widget.Toolbar;
Expand All @@ -16,7 +16,7 @@
import java.util.ArrayList;
import java.util.List;

public class PartTwoActivity extends ActionBarActivity {
public class PartTwoActivity extends AppCompatActivity {

private LinearLayout mToolbarContainer;
private int mToolbarHeight;
Expand Down Expand Up @@ -50,7 +50,7 @@ private void initRecyclerView() {
RecyclerAdapter recyclerAdapter = new RecyclerAdapter(createItemList());
recyclerView.setAdapter(recyclerAdapter);

recyclerView.setOnScrollListener(new HidingScrollListener(this) {
recyclerView.addOnScrollListener(new HidingScrollListener(this) {

@Override
public void onMoved(int distance) {
Expand Down
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;
}
}
Original file line number Diff line number Diff line change
@@ -1,5 +1,4 @@
<?xml version="1.0" encoding="utf-8"?>
<!--drawable/btn_fab_default.xml-->
<layer-list xmlns:android="http://schemas.android.com/apk/res/android">
<item android:bottom="0dp" android:left="2dp" android:right="2dp" android:top="2dp">
<shape android:shape="oval">
Expand All @@ -11,4 +10,4 @@
<solid android:color="@color/color_primary_red" />
</shape>
</item>
</layer-list>
</layer-list>
7 changes: 7 additions & 0 deletions app/src/main/res/layout/activity_main.xml
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,13 @@
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/part_two"/>

<Button
android:id="@+id/partThreeButton"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_gravity="center"
android:text="@string/part_three"/>
</LinearLayout>

<android.support.v7.widget.Toolbar
Expand Down
2 changes: 1 addition & 1 deletion app/src/main/res/layout/activity_part_one.xml
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@
android:layout_gravity="bottom|right"
android:layout_marginBottom="16dp"
android:layout_marginRight="16dp"
android:background="@drawable/fab_background"
android:background="@drawable/fab_bcg"
android:src="@drawable/ic_favorite_outline_white_24dp"
android:contentDescription="@string/fab_description"/>

Expand Down
40 changes: 40 additions & 0 deletions app/src/main/res/layout/activity_part_three.xml
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>
Loading

0 comments on commit 7c6c010

Please sign in to comment.