package com.roboo.like.netease;
import android.graphics.drawable.ColorDrawable;
import android.os.Bundle;
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.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.LinearLayout;
import android.widget.TextView;
import com.roboo.like.netease.view.VerticalViewPager;
public class VerticalViewPagerActivity extends BaseActivity
{
private static final float MIN_SCALE = 0.75f;
private static final float MIN_ALPHA = 0.75f;
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setTVTitle(R.string.tv_vertical_viewpager);
FrameLayout frameLayout = new FrameLayout(this);
//手动创建的ViewPager需要设置一个id 否则报错!
VerticalViewPager verticalViewPager = new VerticalViewPager(this);
verticalViewPager.setId(R.id.viewpager);
frameLayout.addView(verticalViewPager, new FrameLayout.LayoutParams(LayoutParams.MATCH_PARENT,LayoutParams.MATCH_PARENT));
// TODO setContentView Tag
setContentView(frameLayout);
verticalViewPager.setAdapter(new DummyAdapter(getSupportFragmentManager()));
verticalViewPager.setPageMargin(getResources().getDimensionPixelSize(R.dimen.pager_margin));
verticalViewPager.setPageMarginDrawable(new ColorDrawable(0xFF669900));
verticalViewPager.setPageTransformer(true, new ViewPager.PageTransformer()
{
@Override
public void transformPage(View view, float position)
{
int pageWidth = view.getWidth();
int pageHeight = view.getHeight();
if (position < -1)
{ // [-Infinity,-1)
// This page is way off-screen to the left.
view.setAlpha(0);
}
else if (position <= 1)
{ // [-1,1]
// Modify the default slide transition to shrink the page as
// well
float scaleFactor = Math.max(MIN_SCALE, 1 - Math.abs(position));
float vertMargin = pageHeight * (1 - scaleFactor) / 2;
float horzMargin = pageWidth * (1 - scaleFactor) / 2;
if (position < 0)
{
view.setTranslationY(vertMargin - horzMargin / 2);
}
else
{
view.setTranslationY(-vertMargin + horzMargin / 2);
}
// Scale the page down (between MIN_SCALE and 1)
view.setScaleX(scaleFactor);
view.setScaleY(scaleFactor);
// Fade the page relative to its size.
view.setAlpha(MIN_ALPHA + (scaleFactor - MIN_SCALE) / (1 - MIN_SCALE) * (1 - MIN_ALPHA));
}
else
{ // (1,+Infinity]
// This page is way off-screen to the right.
view.setAlpha(0);
}
}
});
}
public class DummyAdapter extends FragmentPagerAdapter
{
public DummyAdapter(FragmentManager fm)
{
super(fm);
}
@Override
public Fragment getItem(int position)
{
return PlaceholderFragment.newInstance(position + 1);
}
@Override
public int getCount()
{
return 3;
}
@Override
public CharSequence getPageTitle(int position)
{
switch (position)
{
case 0:
return "PAGE 1";
case 1:
return "PAGE 2";
case 2:
return "PAGE 3";
}
return null;
}
}
/**
* A placeholder fragment containing a simple view.
*/
public static class PlaceholderFragment extends Fragment
{
/**
* The fragment argument representing the section number for this
* fragment.
*/
private static final String ARG_SECTION_NUMBER = "section_number";
/**
* Returns a new instance of this fragment for the given section number.
*/
public static PlaceholderFragment newInstance(int sectionNumber)
{
PlaceholderFragment fragment = new PlaceholderFragment();
Bundle args = new Bundle();
args.putInt(ARG_SECTION_NUMBER, sectionNumber);
fragment.setArguments(args);
return fragment;
}
public PlaceholderFragment()
{
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
LinearLayout linearLayout = new LinearLayout(getActivity());
linearLayout.setGravity(Gravity.CENTER);
TextView textView = new TextView(getActivity());
textView.setText(Integer.toString(getArguments().getInt(ARG_SECTION_NUMBER)));
linearLayout.addView(textView);;
return linearLayout;
}
}
}