package com.snail.travellingTrail.main.controller; import java.io.UnsupportedEncodingException; import net.tsz.afinal.FinalHttp; import net.tsz.afinal.http.AjaxCallBack; import org.apache.http.HttpEntity; import org.apache.http.entity.StringEntity; import android.app.Activity; import android.content.Intent; import android.graphics.Canvas; import android.graphics.drawable.BitmapDrawable; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentStatePagerAdapter; import android.support.v4.view.ViewPager; import android.support.v4.view.ViewPager.OnPageChangeListener; import android.util.Log; import android.view.Gravity; import android.view.LayoutInflater; import android.view.MotionEvent; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.AnimationUtils; import android.widget.Button; import android.widget.CheckBox; import android.widget.CompoundButton; import android.widget.ImageView; import android.widget.PopupWindow; import android.widget.PopupWindow.OnDismissListener; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.Toast; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.CanvasTransformer; import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu.OnClosedListener; import com.snail.travellingTrail.R; import com.snail.travellingTrail.newTravel.controller.CreateNewTravelActivity; import com.snail.travellingTrail.newTravel.controller.LocationMapActivity; import com.snail.travellingTrail.slidingmenu.controller.LoginActivity; import com.snail.travellingTrail.slidingmenu.controller.SetAppInfoFaceAnimation; import com.snail.travellingTrail.trailMap.controller.WriteCommentActivity; import com.snail.travellingTrail.common.RequestAddress; import com.snail.travellingTrail.common.TravellingTrailApplication; import com.snail.travellingTrail.common.utils.DialogTool; import com.snail.travellingTrail.common.utils.PhoneInfo; import com.snail.travellingTrail.common.utils.TimeUtil; import com.snail.travellingTrail.common.utils.ToastHelper; import com.snail.travellingTrail.common.utils.UnitConversion; import com.snail.travellingTrail.finishTravel.controller.FinishTravelActivity; public class MainTabActivity extends SetAppInfoFaceAnimation implements OnCheckedChangeListener, OnClickListener, android.widget.CompoundButton.OnCheckedChangeListener { private CanvasTransformer canvasTransformer; Fragment fragment = null; public static boolean refresh = false; static int TAB_COUNT = 2; ViewPager viewPager; FragmentStatePagerAdapter pagerAdapter; RadioGroup radioGroup; PopupWindow popupWindow; ImageView locateImageView, stopImageView; View popupView, popupFrameView; CheckBox addNewButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main_tab); PhoneInfo.loadScreenInfo(MainTabActivity.this); getSupportActionBar().setDisplayHomeAsUpEnabled(true); getSupportFragmentManager().beginTransaction().commit(); SlidingMenu sm = getSlidingMenu(); setSlidingActionBarEnabled(true); sm.setBehindWidth( (PhoneInfo.screenWidthPx/5)*3); sm.setBehindScrollScale(0.0f); canvasTransformer = new CanvasTransformer(){ @Override public void transformCanvas(Canvas canvas, float percentOpen) { float scale = (float) (percentOpen*0.25 + 0.75); canvas.scale(scale, scale, canvas.getWidth()/2, canvas.getHeight()/2); } }; sm.setBehindCanvasTransformer(canvasTransformer); sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); sm.setOnClosedListener(new OnClosedListener() { @Override public void onClosed() { if(refresh){ pagerAdapter = new TabFragmentPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(pagerAdapter); } } }); findView(); initPopupWindow(); initView(); } private void findView() { viewPager = (ViewPager) this.findViewById(R.id.act_main_tab_viewpager_content); radioGroup = (RadioGroup) this.findViewById(R.id.act_main_tab_rgrp); addNewButton = (CheckBox) this.findViewById(R.id.act_main_tab_btn_new); } private void initView() { pagerAdapter = new TabFragmentPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(pagerAdapter); viewPager.setOnPageChangeListener(new ViewPageChangeListener()); radioGroup.setOnCheckedChangeListener(this); addNewButton.setOnCheckedChangeListener(this); } class TabFragmentPagerAdapter extends FragmentStatePagerAdapter { public TabFragmentPagerAdapter(FragmentManager fm) { super(fm); } @Override public int getCount() { return TAB_COUNT; } @Override public CharSequence getPageTitle(int position) { return null; } @Override public Fragment getItem(int position) { switch (position) { case 0: fragment = new SquareFragment(); break; case 1: if(TravellingTrailApplication.loginUser != null){ fragment = new EmptyFragment(); }else{ fragment = new MineFragment(); } break; default: fragment = new SquareFragment(); break; } return fragment; } } class ViewPageChangeListener implements OnPageChangeListener { @Override public void onPageSelected(int position) { // 当前Fragment页面被选中时将Tab切换到当前项 switch (position) { case 0: getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); radioGroup.check(R.id.act_main_tab_rbtn_square); break; case 1: if(TravellingTrailApplication.loginUser != null) { pagerAdapter.notifyDataSetChanged(); getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_MARGIN); radioGroup.check(R.id.act_main_tab_rbtn_mine); }else{ Intent intent = new Intent(); intent.setClass(MainTabActivity.this, LoginActivity.class); startActivity(intent); } break; default: break; } } @Override public void onPageScrolled(int arg0, float arg1, int arg2) { } @Override public void onPageScrollStateChanged(int arg0) { } } @Override protected void onPause() { if (popupWindow != null && popupWindow.isShowing()) { popupWindow.dismiss(); } super.onPause(); } @Override public void onCheckedChanged(RadioGroup group, int checkedId) { //当RadioButton被选中时,切换ViewPager页面 switch (checkedId) { case R.id.act_main_tab_rbtn_square: viewPager.setCurrentItem(0); break; case R.id.act_main_tab_rbtn_mine: viewPager.setCurrentItem(1); break; default: break; } } @Override protected void onResume() { Log.i("onResume", "onResume"); if(TravellingTrailApplication.loginUser != null){ viewPager.setCurrentItem(0); getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); SquareFragment.REFRASH = false; }else{ viewPager.setCurrentItem(0); pagerAdapter = new TabFragmentPagerAdapter(getSupportFragmentManager()); viewPager.setAdapter(pagerAdapter); getSlidingMenu().setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN); radioGroup.check(R.id.act_main_tab_rbtn_square); } super.onResume(); } private void getPopupWindwoInstance() { if (popupWindow == null) { initPopupWindow(); } else { popupWindow.dismiss(); } } //初始化tab中新旅程("+"号)的弹出窗 private void initPopupWindow() { setInTravellingWindow(); setNoTravelWindow(); LayoutInflater layoutInflater = LayoutInflater.from(MainTabActivity.this); popupView = layoutInflater.inflate(R.layout.popup_main_tab_new, null); popupFrameView = popupView.findViewById(R.id.popup_main_tab_new_rlyt_frame); locateImageView = (ImageView) popupView.findViewById(R.id.popup_main_tab_new_iv_locate); stopImageView = (ImageView) popupView.findViewById(R.id.popup_main_tab_new_iv_stop); stopImageView.setOnClickListener(this); locateImageView.setOnClickListener(this); popupWindow = new PopupWindow( popupView, PhoneInfo.screenWidthPx / 3, UnitConversion.dip2px(MainTabActivity.this, 133) ); //设置弹出框的可点击外部消失 popupWindow.setBackgroundDrawable(new BitmapDrawable());//这句一定得有,否则点击外部不起作用 popupWindow.setOutsideTouchable(true); popupWindow.setTouchInterceptor(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { if (event.getAction() == MotionEvent.ACTION_OUTSIDE) { popupWindow.dismiss(); addNewButton.setChecked(false); return true; } return false; } }); popupWindow.setOnDismissListener(new OnDismissListener() { @Override public void onDismiss() { popupWindow = null; addNewButton.startAnimation( AnimationUtils.loadAnimation(MainTabActivity.this, R.anim.anim_tab_new_out) ); } }); popupFrameView.setOnClickListener(this); } private void setNoTravelWindow() { } private void setInTravellingWindow() { } @Override public void onClick(View v) { Intent intent = new Intent(); switch (v.getId()) { case R.id.popup_main_tab_new_iv_stop: popupWindow.dismiss(); addNewButton.setChecked(false); // intent.setClass(MainTabActivity.this, FinishTravelActivity.class); // startActivity(intent); ToastHelper.showToast(MainTabActivity.this, "结束旅程", Toast.LENGTH_SHORT); sendFinishTravel(); break; case R.id.popup_main_tab_new_iv_locate: popupWindow.dismiss(); addNewButton.setChecked(false); // if (User.Us_Info_Us_Id == null || User.Us_Info_Us_Id.equals("")) // { // ToastHelper.showToast(MainTabActivity.this, "亲,别激动,请先登录哈", Toast.LENGTH_SHORT); // return; // } intent.setClass(MainTabActivity.this, LocationMapActivity.class); startActivity(intent); ToastHelper.showToast(MainTabActivity.this, "发表地点心情", Toast.LENGTH_SHORT); break; case R.id.popup_main_tab_new_rlyt_frame: if (popupWindow != null && popupWindow.isShowing()) { popupWindow.dismiss(); addNewButton.setChecked(false); } break; default: break; } } private void sendFinishTravel() { String jsonString = "\"Trvl_Time_End\": \"" + TimeUtil.getCurrentDate() + "\"," + "\"Trvl_Conclusion\": \"结束啦\"," + "\"Trvl_City_Among\":\"三亚\"," + "\"Trvl_City_Destination\":\"惠州\"," + "\"Trvls_Status\":9,\"Trvl_Us_Id\":" + TravellingTrailApplication.loginUser.getUs_Info_Us_Id(); HttpEntity entity; try { entity = new StringEntity(jsonString); FinalHttp finalHttp = new FinalHttp(); finalHttp.post(RequestAddress.FINISH_TRAVEL, entity, "application/json", new AjaxCallBack<String>() { @Override public void onFailure(Throwable t, int errorNo, String strMsg) { // if (strMsg != null) // { // ToastHelper.showToast(MainTabActivity.this, // "失败,错误代码:" + errorNo + "\n错误信息:" + strMsg, // Toast.LENGTH_SHORT); // } ToastHelper.showToast(MainTabActivity.this, "旅程结束啦!", Toast.LENGTH_SHORT); } @Override public void onSuccess(String result) { Log.v("sendFinishTravel sendFinishTravel-->sendFinishTravel", "onSuccess result--->" + result); ToastHelper.showToast(MainTabActivity.this, "旅程结束啦!", Toast.LENGTH_SHORT); } }); } catch (UnsupportedEncodingException e1) { e1.printStackTrace(); } } @Override public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { switch (buttonView.getId()) { case R.id.act_main_tab_btn_new: if (isChecked) { addNewButton.startAnimation( AnimationUtils.loadAnimation(MainTabActivity.this, R.anim.anim_tab_new_in) ); if (TravellingTrailApplication.loginUser == null) //是否登录 { ToastHelper.showToast(MainTabActivity.this, "亲,别激动,请先登录哈", Toast.LENGTH_SHORT); buttonView.setChecked(false); addNewButton.startAnimation( AnimationUtils.loadAnimation(MainTabActivity.this, R.anim.anim_tab_new_out) ); } else { if (TravellingTrailApplication.loginUser.isInTravlling() && TravellingTrailApplication.loginUser.getIdOfTravelInTravlling() > 0 ) { //有正在进行的旅程 getPopupWindwoInstance(); popupWindow.setAnimationStyle(R.style.PopupAnimation); popupWindow.showAtLocation(buttonView, Gravity.BOTTOM, 0, 0); }else { buttonView.setChecked(false); addNewButton.startAnimation( AnimationUtils.loadAnimation(MainTabActivity.this, R.anim.anim_tab_new_out) ); ToastHelper.showToast(MainTabActivity.this, "开始新旅程/结束旅程", Toast.LENGTH_SHORT); Intent intent = new Intent(MainTabActivity.this, CreateNewTravelActivity.class); startActivity(intent); } } } else { if (popupWindow != null && popupWindow.isShowing()) { popupWindow.dismiss(); } } break; default: break; } } }