package edu.hebtu.movingcampus.activity.wrapper;
import java.util.List;
import org.apache.http.message.BasicNameValuePair;
import android.content.Intent;
import android.os.AsyncTask;
import android.support.v4.app.Fragment;
import android.support.v4.view.ViewPager.OnPageChangeListener;
import android.view.MotionEvent;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.animation.Animation;
import android.view.animation.Animation.AnimationListener;
import android.view.animation.AnimationUtils;
import android.widget.Button;
import android.widget.FrameLayout;
import android.widget.FrameLayout.LayoutParams;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.Toast;
import edu.hebtu.movingcampus.R;
import edu.hebtu.movingcampus.activity.MainActivity;
import edu.hebtu.movingcampus.activity.SearchActivity;
import edu.hebtu.movingcampus.activity.base.ActionDispatcher;
import edu.hebtu.movingcampus.activity.base.PageWraper;
import edu.hebtu.movingcampus.adapter.base.NewsPageAdapter;
import edu.hebtu.movingcampus.entity.NewsShort;
import edu.hebtu.movingcampus.indicator.PageIndicator;
import edu.hebtu.movingcampus.slidingmenu.SlidingMenu;
import edu.hebtu.movingcampus.subjects.NetworkChangeReceiver.NetworkchangeListener;
import edu.hebtu.movingcampus.utils.IntentUtil;
import edu.hebtu.movingcampus.utils.NetWorkHelper;
import edu.hebtu.movingcampus.utils.PopupWindowUtil;
import edu.hebtu.movingcampus.view.ChildViewPager;
import edu.hebtu.movingcampus.view.NewsFragment;
public class InfoCenterActivity implements OnClickListener, AnimationListener,
PageWraper, NetworkchangeListener, ActionDispatcher {
// [start]变量
/**
* 数字代表列表顺序
*/
private View title;
private LinearLayout mlinear_listview;
// title标题
private ImageView imgQuery;
private ImageView imgMore;
private ImageView imgLeft;
private ImageView imgRight;
// views
private ChildViewPager mViewPager;
private NewsPageAdapter mBasePageAdapter;
private PageIndicator mIndicator;
private LinearLayout loadLayout;
private LinearLayout loadFaillayout;
// init daos
private LinearLayout llGoHome;
private Button bn_refresh;
private boolean mIsTitleHide = false;
private boolean mIsAnim = false;
public static String current_page = "0";
private boolean isShowPopupWindows = false;
private View content;
private MainActivity mainActivity = MainActivity.instance;
// [end]
// [start]生命周期
public InfoCenterActivity(View content) {
this.content = content;
initControl();
initViewPager();
initgoHome();
}
private void initControl() {
loadLayout = (LinearLayout) content.findViewById(R.id.view_loading);
loadFaillayout = (LinearLayout) content
.findViewById(R.id.view_load_fail);
imgQuery = (ImageView) content.findViewById(R.id.imageview_above_query);
imgQuery.setOnClickListener(this);
imgQuery.setVisibility(View.GONE);
imgMore = (ImageView) content.findViewById(R.id.imageview_above_more);
imgMore.setOnClickListener(this);
imgLeft = (ImageView) content.findViewById(R.id.imageview_above_left);
imgRight = (ImageView) content.findViewById(R.id.imageview_above_right);
mViewPager = (ChildViewPager) content.findViewById(R.id.above_pager);
mIndicator = (PageIndicator) content.findViewById(R.id.above_indicator);
llGoHome = (LinearLayout) content
.findViewById(R.id.Linear_above_toHome);
title = content.findViewById(R.id.main_title);
mlinear_listview = (LinearLayout) content
.findViewById(R.id.main_linear_listview);
bn_refresh = (Button) content.findViewById(R.id.btn_refresh);
bn_refresh.setOnClickListener(this);
}
private void initViewPager() {
mBasePageAdapter = new NewsPageAdapter(mainActivity);
mViewPager.setAdapter(mBasePageAdapter);
mViewPager.setOffscreenPageLimit(0);
mIndicator.setViewPager(mViewPager);
mIndicator.setOnPageChangeListener(new MyPageChangeListener());
new MyTask().execute();
}
private void initgoHome() {
llGoHome.setOnClickListener(this);
}
// [start]继承方法
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.Linear_above_toHome:
MainActivity.instance.getSlidingMenu().toggle();
break;
case R.id.imageview_above_more:
if (isShowPopupWindows) {
new PopupWindowUtil<Fragment>(mViewPager).showActionWindow(v,
mainActivity, mBasePageAdapter.getFragments());
}
break;
case R.id.imageview_above_query:
if (NetWorkHelper.isNetworkAvailable(mainActivity)) {
IntentUtil.start_activity(mainActivity, SearchActivity.class,
new BasicNameValuePair("type", current_page));
} else {
Toast.makeText(mainActivity.getApplicationContext(),
"网络连接失败,请检查网络", Toast.LENGTH_LONG).show();
}
break;
case R.id.btn_refresh:
imgQuery.setVisibility(View.GONE);
new MyTask().execute();
break;
default:
break;
}
}
@Override
public boolean dispatchTouchEvent(MotionEvent event) {
if (mIsAnim || mViewPager.getChildCount() <= 1) {
return false;
}
final int action = event.getAction();
float x = event.getX();
float y = event.getY();
switch (action) {
case MotionEvent.ACTION_DOWN:
lastY = y;
lastX = x;
return false;
case MotionEvent.ACTION_MOVE:
float dY = Math.abs(y - lastY);
float dX = Math.abs(x - lastX);
boolean down = y > lastY ? true : false;
lastY = y;
lastX = x;
if (dX < 8 && dY > 8 && !mIsTitleHide && !down) {
Animation anim = AnimationUtils.loadAnimation(mainActivity,
R.anim.push_top_in);
// anim.setFillAfter(true);
anim.setAnimationListener(InfoCenterActivity.this);
title.startAnimation(anim);
} else if (dX < 8 && dY > 8 && mIsTitleHide && down) {
Animation anim = AnimationUtils.loadAnimation(mainActivity,
R.anim.push_top_out);
// anim.setFillAfter(true);
anim.setAnimationListener(InfoCenterActivity.this);
title.startAnimation(anim);
} else {
return false;
}
mIsTitleHide = !mIsTitleHide;
mIsAnim = true;
break;
default:
return false;
}
return false;
}
/**
* 加载分类list的task
*
* @author wangxin
*/
public class MyTask extends AsyncTask<Void, String, List<NewsShort>> {
private boolean mUseCache;
public MyTask() {
mUseCache = true;
}
public MyTask(boolean useCache) {
mUseCache = useCache;
}
@Override
protected void onPreExecute() {
super.onPreExecute();
imgLeft.setVisibility(View.GONE);
imgRight.setVisibility(View.GONE);
loadLayout.setVisibility(View.VISIBLE);
mViewPager.setVisibility(View.GONE);
//mViewPager.removeAllViews();
isShowPopupWindows = false;
}
@Override
protected List<NewsShort> doInBackground(Void... params) {
return ((NewsFragment)mBasePageAdapter.getItem(Integer.parseInt(current_page))).onLoad();
}
@Override
protected void onPostExecute(List<NewsShort>result) {
super.onPostExecute(result);
isShowPopupWindows = true;
//mViewPager.removeAllViews();
if (result != null) {
imgRight.setVisibility(View.VISIBLE);
loadLayout.setVisibility(View.GONE);
loadFaillayout.setVisibility(View.GONE);
} else {
//mBasePageAdapter.addNullFragment();
loadLayout.setVisibility(View.GONE);
loadFaillayout.setVisibility(View.VISIBLE);
}
mViewPager.setVisibility(View.VISIBLE);
mBasePageAdapter.notifyDataSetChanged();
mIndicator.notifyDataSetChanged();
}
}
/**
* viewPager切换页面
*
* @author mingxv
*/
class MyPageChangeListener implements OnPageChangeListener {
@Override
public void onPageScrollStateChanged(int arg0) {
}
@Override
public void onPageScrolled(int arg0, float arg1, int arg2) {
}
@Override
public void onPageSelected(int arg0) {
if (arg0 == 0) {
imgLeft.setVisibility(View.GONE);
imgRight.setVisibility(View.VISIBLE);
} else if (arg0 == mBasePageAdapter.getFragments().size() - 1) {
imgRight.setVisibility(View.GONE);
imgLeft.setVisibility(View.VISIBLE);
} else {
imgLeft.setVisibility(View.VISIBLE);
imgRight.setVisibility(View.VISIBLE);
}
if(arg0==0&&MainActivity.instance.getCurrentIndex()==0)
MainActivity.instance.getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
else
MainActivity.instance.getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_NONE);
current_page = "" + arg0;
if(((NewsFragment)mBasePageAdapter.getItem(arg0)).toBeLoad())
new MyTask().execute();
}
}
@Override
public void onAnimationEnd(Animation animation) {
if (mIsTitleHide) {
title.setVisibility(View.GONE);
} else {
title.setVisibility(View.VISIBLE);
}
mIsAnim = false;
}
@Override
public void onAnimationRepeat(Animation animation) {
}
@Override
public void onAnimationStart(Animation animation) {
title.setVisibility(View.VISIBLE);
if (mIsTitleHide) {
FrameLayout.LayoutParams lp = (LayoutParams) mlinear_listview
.getLayoutParams();
lp.setMargins(0, 0, 0, 0);
mlinear_listview.setLayoutParams(lp);
} else {
FrameLayout.LayoutParams lp = (FrameLayout.LayoutParams) title
.getLayoutParams();
lp.setMargins(0, 0, 0, 0);
title.setLayoutParams(lp);
FrameLayout.LayoutParams lp1 = (LayoutParams) mlinear_listview
.getLayoutParams();
lp1.setMargins(0, mainActivity.getResources()
.getDimensionPixelSize(R.dimen.title_height), 0, 0);
mlinear_listview.setLayoutParams(lp1);
}
}
private float lastX = 0;
private float lastY = 0;
@Override
public void onDataEnabled() {
// TODO Auto-generated method stub
}
@Override
public void onDataDisabled() {
// TODO Auto-generated method stub
}
@Override
public void onPause() {
// TODO Auto-generated method stub
}
@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
}
@Override
public void onResume() {
}
}