package com.ustc.dystu.dandelion;
import android.content.Intent;
import android.os.Bundle;
import android.support.v4.app.FragmentManager;
import android.view.KeyEvent;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import android.widget.ImageView;
import android.widget.TabHost.OnTabChangeListener;
import android.widget.TextView;
import com.baidu.location.LocationClient;
import com.baidu.location.LocationClientOption;
import com.baidu.location.LocationClientOption.LocationMode;
import com.jeremyfeinstein.slidingmenu.lib.SlidingMenu;
import com.jeremyfeinstein.slidingmenu.lib.app.SlidingFragmentActivity;
import com.ustc.dystu.dandelion.adwaps.QuitPopAd;
import com.ustc.dystu.dandelion.app.DandelionApplication;
import com.ustc.dystu.dandelion.atk.AccessTokenKeeper;
import com.ustc.dystu.dandelion.fragment.BaseFragmentTabHost;
import com.ustc.dystu.dandelion.fragment.DiscoverFragment;
import com.ustc.dystu.dandelion.fragment.LeftBottomFragment;
import com.ustc.dystu.dandelion.fragment.MeFragment;
import com.ustc.dystu.dandelion.fragment.TravelFragment;
import com.ustc.dystu.dandelion.net.DandelionAPI;
import com.ustc.dystu.dandelion.utils.Logger;
public class MainActivity extends SlidingFragmentActivity implements
OnTabChangeListener {
private static final String TAG = MainActivity.class.getSimpleName();
private BaseFragmentTabHost mTabHost;
private static final String TRAVEL = "travel";
private static final String ME = "me";
private static final String DISCOVER = "discover";
private View viewTravel;
private View viewMe;
private View viewDiscover;
private LocationClient LocationClient;
private LocationMode tempMode = LocationMode.Hight_Accuracy;
private String tempcoor = "gcj02";
@Override
public void onCreate(Bundle savedInstanceState) {
if (savedInstanceState != null) {
Logger.d(TAG, "savedInstanceState is not null");
savedInstanceState.remove("android:support:fragments");
}
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
initsm();
mTabHost = (BaseFragmentTabHost) findViewById(android.R.id.tabhost);
mTabHost.setup(this, getSupportFragmentManager(), R.id.realtabcontent);
initViews();
mTabHost.addTab(mTabHost.newTabSpec(TRAVEL).setIndicator(viewTravel),
TravelFragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec(DISCOVER)
.setIndicator(viewDiscover), DiscoverFragment.class, null);
mTabHost.addTab(mTabHost.newTabSpec(ME).setIndicator(viewMe),
MeFragment.class, null);
mTabHost.getTabWidget().setVisibility(View.VISIBLE);
mTabHost.setOnTabChangedListener(this);
mTabHost.setCurrentTab(0);
onTabChanged(TRAVEL);
startLocation();
}
private void initsm() {
// set the Behind View
setBehindContentView(R.layout.menu_frame);
getSupportFragmentManager().beginTransaction()
.replace(R.id.menu_frame, new LeftBottomFragment()).commit();
//getSupportFragmentManager().beginTransaction().replace(R.id.menu_frame, new LeftBottomFragment(), "TAG").commit();
// customize the SlidingMenu
SlidingMenu sm = getSlidingMenu();
sm.setShadowWidthRes(R.dimen.shadow_width);
sm.setShadowDrawable(R.drawable.shadow);
sm.setBehindOffsetRes(R.dimen.slidingmenu_offset);
sm.setFadeDegree(0.35f);
sm.setTouchModeAbove(SlidingMenu.TOUCHMODE_FULLSCREEN);
}
View bottomSelect;
View bottomDiscover;
View bottomMe;
private void initViews() {
viewTravel = View.inflate(MainActivity.this, R.layout.tab_main, null);
((TextView) viewTravel.findViewById(R.id.tab_textview_title))
.setText(R.string.tab_travel);
((ImageView) viewTravel.findViewById(R.id.tab_imageview_icon))
.setImageResource(R.drawable.tab_travel);
bottomSelect = viewTravel.findViewById(R.id.view_bottom_line);
viewDiscover = View.inflate(MainActivity.this, R.layout.tab_main, null);
((TextView) viewDiscover.findViewById(R.id.tab_textview_title))
.setText(R.string.tab_discover);
((ImageView) viewDiscover.findViewById(R.id.tab_imageview_icon))
.setImageResource(R.drawable.tab_discover);
bottomDiscover = viewDiscover.findViewById(R.id.view_bottom_line);
viewMe = View.inflate(MainActivity.this, R.layout.tab_main, null);
((TextView) viewMe.findViewById(R.id.tab_textview_title))
.setText(R.string.tab_me);
((ImageView) viewMe.findViewById(R.id.tab_imageview_icon))
.setImageResource(R.drawable.tab_me);
bottomMe = viewMe.findViewById(R.id.view_bottom_line);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.logout:
AccessTokenKeeper.clear(this);
DandelionAPI.getInstance(this).logout();
startActivity(new Intent(this, SplashActivity.class));
finish();
break;
default:
break;
}
return super.onOptionsItemSelected(item);
}
private void startLocation() {
LocationClient = ((DandelionApplication) getApplication()).mLocationClient;
LocationClient.start();
if (LocationClient != null && LocationClient.isStarted()) {
InitLocation();
LocationClient.requestLocation();
}
}
@Override
protected void onDestroy() {
if (LocationClient != null) {
LocationClient.stop();
}
super.onDestroy();
}
private void InitLocation() {
LocationClientOption option = new LocationClientOption();
option.setLocationMode(tempMode);// 设置定位模式
option.setCoorType(tempcoor);// 返回的定位结果是百度经纬度,默认值gcj02
int span = 1000;
option.setScanSpan(span);// 设置发起定位请求的间隔时间
LocationClient.setLocOption(option);
}
@Override
public void onTabChanged(String tabId) {
FragmentManager manager = getSupportFragmentManager();
// getBackStackEntryCount()返回堆栈的总数目
if (manager.getBackStackEntryCount() > 0) {
manager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
Logger.d(TAG, "哈哈,popBackStack执行了");
}
if (TRAVEL.equals(tabId)) {
bottomSelect.setVisibility(View.VISIBLE);
bottomMe.setVisibility(View.INVISIBLE);
bottomDiscover.setVisibility(View.INVISIBLE);
} else if (ME.equals(tabId)) {
bottomSelect.setVisibility(View.INVISIBLE);
bottomMe.setVisibility(View.VISIBLE);
bottomDiscover.setVisibility(View.INVISIBLE);
} else if (DISCOVER.equals(tabId)) {
bottomSelect.setVisibility(View.INVISIBLE);
bottomMe.setVisibility(View.INVISIBLE);
bottomDiscover.setVisibility(View.VISIBLE);
}
}
@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_BACK) {
// 调用退屏广告
QuitPopAd.getInstance().show(this);
}
return true;
}
}