package com.roboo.like.google.fragments; import java.util.LinkedList; import java.util.Random; import android.os.Bundle; import android.os.Handler; import android.support.v4.view.PagerAdapter; import android.view.LayoutInflater; import android.view.View; import android.view.View.OnClickListener; import android.view.ViewGroup; import android.widget.ImageView; import android.widget.Toast; import com.roboo.like.google.R; import com.roboo.like.google.adapters.ImageFragmentAdapter; import com.roboo.like.google.infinite.InfiniteViewPager; import com.roboo.like.google.infinite.ViewPagerEx.OnPageChangeListener; import com.roboo.like.google.progressbutton.ProcessButton; import com.roboo.like.google.progressbutton.ProgressGenerator; import com.roboo.like.google.progressbutton.ProgressGenerator.OnCompleteListener; import com.roboo.like.google.views.CirclePageIndicator; import com.roboo.like.google.views.NumberProgressBar; public class UserFragment extends BaseFragment { private InfiniteViewPager mViewPager; private NumberProgressBar mNumberProgressBar; private ProcessButton mProcessButton; private CirclePageIndicator mIndicator; private PagerAdapter mAdapter; private int mPosition = 0; private int mProgress; private ImageView mImageView; private final Handler mHandler = new Handler() { public void handleMessage(android.os.Message msg) { mImageView.getDrawable().setLevel(msg.what % 6); if (mNumberProgressBar.getProgress() >= 100) { mNumberProgressBar.setProgress(1); } mNumberProgressBar.incrementProgressBy(msg.what % 6); }; }; private Runnable mSwapRunnable = new Runnable() { public void run() { mViewPager.setCurrentItem(mPosition % mViewPager.getAdapter().getCount(), true); mPosition++; mHandler.postDelayed(mSwapRunnable, 1000L); mHandler.sendEmptyMessage(mPosition); } }; public static UserFragment newInstance() { UserFragment fragment = new UserFragment(); return fragment; } @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_user, null);// TODO mViewPager = (InfiniteViewPager) view.findViewById(R.id.vp_viewpager); mImageView = (ImageView) view.findViewById(R.id.iv_image); mIndicator = (CirclePageIndicator) view.findViewById(R.id.cpi_indicator); mNumberProgressBar = (NumberProgressBar) view.findViewById(R.id.npb_progress); mProcessButton = (ProcessButton) view.findViewById(R.id.btnSend); return view; } public void onActivityCreated(Bundle savedInstanceState) { super.onActivityCreated(savedInstanceState); LinkedList<Object> data = new LinkedList<Object>(); data.add(new Object()); data.add(new Object()); data.add(new Object()); data.add(new Object()); mAdapter = new ImageFragmentAdapter(getFragmentManager(), data); mViewPager.setAdapter(mAdapter); mIndicator.setViewPager(mViewPager); setListener(); } @Override public void onResume() { super.onResume(); mHandler.postDelayed(mSwapRunnable, 1000L); } @Override public void onDetach() { mHandler.removeCallbacks(mSwapRunnable); super.onDetach(); } private void setListener() { mViewPager.setOnPageChangeListener(new OnPageChangeListenerImpl()); mProcessButton.setOnClickListener(getOnClickListener()); } private OnClickListener getOnClickListener() { return new OnClickListener() { public void onClick(View v) { new ProgressGenerator(getOnCompleteListener()).start(mProcessButton); } }; } private OnCompleteListener<Object> getOnCompleteListener() { return new OnCompleteListener<Object>() { public Object onComplete() { mProgress = 0; Toast.makeText(getActivity(), "KKK", Toast.LENGTH_LONG).show(); return null; } @Override public Object doInBackgroundProcess() { final Handler handler = new Handler(); handler.postDelayed(new Runnable() { public void run() { mProgress += 10; mProcessButton.setProgress(mProgress); if (mProgress < 100) { handler.postDelayed(this, generateDelay()); } else { onComplete(); } } }, generateDelay()); return null; } private int generateDelay() { return new Random().nextInt(1000); } }; } private class OnPageChangeListenerImpl implements OnPageChangeListener { public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {} public void onPageSelected(int position) { mPosition = position; mIndicator.setCurrentItem(mPosition % 4); } public void onPageScrollStateChanged(int state) {} } }