package com.buaa.shortytall.view.fragment; import java.util.ArrayList; import java.util.List; import java.util.Timer; import java.util.TimerTask; import android.content.Context; import android.graphics.Bitmap; import android.os.Handler; import android.os.Message; import android.support.v4.view.ViewPager; import android.view.LayoutInflater; import android.view.View; import android.widget.ImageView; import android.widget.ListView; import com.actionbarsherlock.app.ActionBar.Tab; import com.actionbarsherlock.app.SherlockFragmentActivity; import com.buaa.shortytall.MyHealth; import com.buaa.shortytall.R; import com.buaa.shortytall.adapter.NewsAdapter; import com.buaa.shortytall.adapter.OriginViewPagerAdapter; import com.buaa.shortytall.bean.News; import com.buaa.shortytall.thread.GetAllNewsThread; import com.buaa.shortytall.thread.GetAllNewsThread.GetAllNewsHandler; import com.buaa.shortytall.thread.GetAllNewsThread.GetAllNewsListener; import com.buaa.shortytall.util.JsonUtil; import com.buaa.shortytall.util.ViewUtil; import com.buaa.shortytall.view.DotView; public class HomeFragment extends New_BaseFragment implements ViewPager.OnPageChangeListener, GetAllNewsListener{ private ViewPager mViewPager; private OriginViewPagerAdapter mPageAdapter; private ListView mListView; private NewsAdapter mNewsAdapter; private List<View> mViewPagerViews; private List<Bitmap> mBitmaps; private DotView mDotView; private int position = 0; private long mStartTime; private Timer mTimer; private void initViewPageView(){ mBitmaps = new ArrayList<Bitmap>(); mBitmaps.add(ViewUtil.convetDrawable(context.getResources().getDrawable(R.drawable.page1))); mBitmaps.add(ViewUtil.convetDrawable(context.getResources().getDrawable(R.drawable.page2))); mBitmaps.add(ViewUtil.convetDrawable(context.getResources().getDrawable(R.drawable.page3))); } private final TimerTask task = new TimerTask(){ @Override public void run() { if(task.scheduledExecutionTime() - mStartTime >= MyHealth.SPALSH_TIME){ Message message = new Message(); message.what = MyHealth.Msg.NEWS_FRESH; timerHandler.sendMessage(message); // task.cancel(); // this.cancel(); } } }; private final Handler timerHandler = new Handler(){ @Override public void handleMessage(Message msg) { switch(msg.what){ case MyHealth.Msg.NEWS_FRESH: if(position == 3){ position = 0; }else { position ++; } mDotView.move(position); mViewPager.setCurrentItem(position); break; default: return; } super.handleMessage(msg); } }; private void initListView(){ LayoutInflater mInflater = LayoutInflater.from(context); View specailView = mInflater.inflate(R.layout.specialnews, null); mViewPager = (ViewPager)specailView.findViewById(R.id.main_view_pager); mDotView = (DotView)specailView.findViewById(R.id.main_dotview); initViewPageView(); //inflate this mViewPagerViews = new ArrayList<View>(); for (Bitmap bitmap : mBitmaps){ View view = mInflater.inflate(R.layout.viewpager, null); ImageView img = (ImageView)view.findViewById(R.id.view_page_image); img.setImageBitmap(bitmap); mViewPagerViews.add(view); } mPageAdapter = new OriginViewPagerAdapter(context, mViewPagerViews); mViewPager.setAdapter(mPageAdapter); mViewPager.setOnPageChangeListener(this); mNewsAdapter = new NewsAdapter(context, handler); mListView.addHeaderView(specailView); mListView.setAdapter(mNewsAdapter); } public HomeFragment(Handler handler, Context context) { super(handler, context); mTimer = new Timer(true); mStartTime = System.currentTimeMillis(); mTimer.schedule(task,0, 1000 * 3); } @Override protected Tab initTab() { Tab tab = ((SherlockFragmentActivity)context).getSupportActionBar() .newTab(); tab.setText("主页"); tab.setIcon(context.getResources().getDrawable(R.drawable.home)); return tab; } @Override public void onResume() { super.onResume(); GetAllNewsHandler handler = new GetAllNewsHandler(HomeFragment.this); GetAllNewsThread thread = new GetAllNewsThread(handler); thread.start(); } @Override public void handleMessage(Message message) { switch(message.what){ case MyHealth.Msg.IMG_LOADED_COMPLETED: if (mNewsAdapter != null){ mNewsAdapter.notifyDataSetChanged(); } break; default: break; } } @Override public int getAsyncInitViewResId() { return R.layout.home; } @Override protected void onInflated() { mListView = (ListView)contentView.findViewById(R.id.main_listview); initListView(); } @Override public void getAllNewsFailed() { } @Override public void getAllNewsSuccessed(String json) { ArrayList<News> data = JsonUtil.praseNewsJson(json); mNewsAdapter.setData(data); } }