package com.roboo.like.google.fragments;
import android.os.Bundle;
import android.support.v4.view.PagerAdapter;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.view.ViewGroup.LayoutParams;
import android.view.animation.BounceInterpolator;
import android.widget.Button;
import android.widget.ImageView;
import android.widget.ImageView.ScaleType;
import android.widget.RelativeLayout;
import com.nineoldandroids.view.ViewHelper;
import com.roboo.like.google.R;
import com.roboo.like.google.StartActivity;
import com.roboo.like.google.infinite.FixedSpeedScroller;
import com.roboo.like.google.infinite.ViewPagerEx;
import com.roboo.like.google.infinite.ViewPagerEx.OnPageChangeListener;
import com.roboo.like.google.infinite.ViewPagerEx.PageTransformer;
import com.roboo.like.google.views.CirclePageIndicator;
public class WelcomeFragment extends BaseFragment
{
private static final int MAX_COUNT = 4;
private static final int[] IMAGES = new int[] { R.drawable.ic_image, R.drawable.ic_image1, R.drawable.ic_image2, R.drawable.ic_image3 };
private ViewPagerEx mViewPager;
private CirclePageIndicator mIndicator;
public static WelcomeFragment newInstance()
{
WelcomeFragment fragment = new WelcomeFragment();
return fragment;
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState)
{
View view = inflater.inflate(R.layout.fragment_welcome, null);// TODO
initView(view);
return view;
}
private void initView(View view)
{
mViewPager = (ViewPagerEx) view.findViewById(R.id.vp_viewpager);
mIndicator = (CirclePageIndicator) view.findViewById(R.id.cpi_indicator);
}
@Override
public void onActivityCreated(Bundle savedInstanceState)
{
super.onActivityCreated(savedInstanceState);
mViewPager.setAdapter(new SubPagerAdapter());
mIndicator.setViewPager(mViewPager);
mViewPager.setOnPageChangeListener(getOnPageChangeListener());
FixedSpeedScroller fixedSpeedScroller = new FixedSpeedScroller(getActivity(), new BounceInterpolator());
mViewPager.setFixedScroller(fixedSpeedScroller);
mViewPager.setPageTransformer(true, getTransformer());
}
private OnPageChangeListener getOnPageChangeListener()
{
return new OnPageChangeListener()
{
@Override
public void onPageSelected(int position)
{
mIndicator.setCurrentItem(position);
}
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels)
{
}
@Override
public void onPageScrollStateChanged(int state)
{
}
};
}
class SubPagerAdapter extends PagerAdapter
{
public int getCount()
{
return MAX_COUNT;
}
public boolean isViewFromObject(View view, Object object)
{
return view == object;
}
@Override
public View instantiateItem(ViewGroup container, int position)
{
ImageView imageView = new ImageView(getActivity());
RelativeLayout relativeLayout = new RelativeLayout(getActivity());
RelativeLayout.LayoutParams relativeParams = new RelativeLayout.LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
LayoutParams params = new LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT);
imageView.setScaleType(ScaleType.FIT_XY);
imageView.setImageResource(IMAGES[position]);
relativeLayout.addView(imageView, relativeParams);
if (position > 2)
{
Button button = new Button(getActivity());
button.setTextColor(getResources().getColor(R.color.sky_blue_color));
button.setText("开启浏览");
button.setGravity(Gravity.CENTER);
int buttonHeight = (int) (48 * getActivity().getResources().getDisplayMetrics().density);
int buttonWidth = (int) (getActivity().getResources().getDisplayMetrics().widthPixels - getActivity().getResources().getDisplayMetrics().density * 100);
relativeParams = new RelativeLayout.LayoutParams(buttonWidth, buttonHeight);
relativeParams.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM);
relativeParams.addRule(RelativeLayout.CENTER_HORIZONTAL);
relativeParams.bottomMargin = buttonHeight/2;
relativeLayout.addView(button, relativeParams);
button.setOnClickListener(new OnClickListener()
{
public void onClick(View v)
{
StartActivity activity = (StartActivity) getActivity();
activity.splashScreenEnd();
}
});
}
container.addView(relativeLayout, params);
return relativeLayout;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object)
{
container.removeView((View) object);
}
}
private PageTransformer getTransformer()
{
PageTransformer pageTransformer = new PageTransformer()
{
public void transformPage(View page, float position)
{
ViewHelper.setTranslationX(page, position < 0 ? 0f : -page.getWidth() * position);
}
};
return pageTransformer;
}
}