package cn.trinea.android.demo;
import java.util.ArrayList;
import java.util.List;
import android.content.BroadcastReceiver;
import android.content.Context;
import android.content.Intent;
import android.content.IntentFilter;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.support.v4.content.LocalBroadcastManager;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import cn.trinea.android.demo.adapter.ImagePagerAdapter;
import cn.trinea.android.view.autoscrollviewpager.AutoScrollViewPager;
import com.viewpagerindicator.CirclePageIndicator;
/**
* ImagePagerFragment
*
* @author <a href="http://www.trinea.cn" target="_blank">Trinea</a> 2014-2-23
*/
public class ImagePagerFragment extends Fragment {
private Context context;
private AutoScrollViewPager viewPager;
private CirclePageIndicator indicator;
private int index;
private ScrollControlReceiver scrollControlReceiver;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
context = getActivity().getApplicationContext();
View v = inflater.inflate(R.layout.auto_scroll_view_pager_inner_fragment_demo, container, false);
viewPager = (AutoScrollViewPager)v.findViewById(R.id.view_pager);
indicator = (CirclePageIndicator)v.findViewById(R.id.indicator);
List<Integer> imageIdList = new ArrayList<Integer>();
imageIdList.add(R.drawable.banner1);
imageIdList.add(R.drawable.banner2);
imageIdList.add(R.drawable.banner3);
imageIdList.add(R.drawable.banner4);
viewPager.setAdapter(new ImagePagerAdapter(context, imageIdList));
indicator.setViewPager(viewPager);
viewPager.setInterval(2000);
viewPager.setSlideBorderMode(AutoScrollViewPager.SLIDE_BORDER_MODE_TO_PARENT);
Bundle bundle = getArguments();
if (bundle != null) {
index = bundle.getInt(AutoScrollViewPagerInnerDemo.EXTRA_INDEX);
if (index == AutoScrollViewPagerInnerDemo.DEFAULT_INDEX) {
viewPager.startAutoScroll();
}
}
return v;
}
@Override
public void onStart() {
super.onStart();
// receive broadcast that selected fragment have changed, to start or stop auto scroll ViewPager
scrollControlReceiver = new ScrollControlReceiver();
LocalBroadcastManager.getInstance(context).registerReceiver(scrollControlReceiver,
new IntentFilter(AutoScrollViewPagerInnerDemo.ACTION_FRAGMENT_SELECTED));
}
@Override
public void onStop() {
LocalBroadcastManager.getInstance(context).unregisterReceiver(scrollControlReceiver);
super.onStop();
}
/**
* ScrollControlReceiver
*
* @author <a href="http://www.trinea.cn" target="_blank">Trinea</a> 2014-4-26
*/
private class ScrollControlReceiver extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
if (intent != null) {
int selectedPosition = intent.getIntExtra(AutoScrollViewPagerInnerDemo.EXTRA_SELECTED_POSITION, 0);
if (index == selectedPosition) {
viewPager.startAutoScroll();
} else {
viewPager.stopAutoScroll();
}
}
}
}
}