package com.appassit.activitys;
import org.androidannotations.annotations.AfterViews;
import org.androidannotations.annotations.Click;
import org.androidannotations.annotations.EActivity;
import org.androidannotations.annotations.ViewById;
import android.app.Application;
import android.content.res.Configuration;
import android.graphics.Typeface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.os.Message;
import android.support.v4.app.Fragment;
import android.support.v4.app.FragmentManager;
import android.support.v4.app.FragmentPagerAdapter;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.text.TextUtils;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.TextView;
import android.widget.Toast;
import com.appassit.R;
import com.appassit.common.Utils;
import com.appassit.fragments.AppManagerFragments;
import com.appassit.fragments.BeautyFragment;
import com.appassit.fragments.RecommendFragment;
import com.appassit.fragments.ToadyFragment_;
import com.appassit.interfaces.QuickReturnInterface;
import com.appassit.tools.NetUtil;
import com.appassit.tools.ToastUtil;
import com.appassit.widget.ActionBarDrawerToggle;
import com.appassit.widget.ArcProgress;
import com.appassit.widget.DrawerArrowDrawable;
import com.appassit.widget.PagerSlidingTabStrip;
import com.appassit.widget.RippleView;
import com.appassit.widget.battery.BatteryChangeView;
import com.appassit.widget.battery.BatteryObserver;
import com.appassit.widget.battery.BatteryObserver.OnBatteryChange;
import com.appassit.widget.pieView.PieControl;
import com.appassit.widget.pieView.PieViewControllee;
import com.baidu.location.BDLocation;
import com.baidu.location.BDLocationListener;
import com.baidu.location.LocationClient;
import com.nineoldandroids.view.ViewHelper;
@EActivity(R.layout.activity_main_app)
public class MainAppActivity extends BaseActivity implements QuickReturnInterface, SLAppication.EventHandler, OnBatteryChange, PieViewControllee {
// region Member Variables
private SectionsPagerAdapter mSectionsPagerAdapter;
private LinearLayout mTabsLinearLayout;
BatteryObserver batteryObserver;
@ViewById(R.id.contentFrame)
FrameLayout contentFrame;
@ViewById(R.id.memory_progress)
ArcProgress memory_progress;
@ViewById(R.id.exitRipView)
RippleView exitRipView;
@ViewById(R.id.root_BatteryView)
BatteryChangeView rootBattryView;
@ViewById(R.id.locationBtn)
ImageView locationBtn;
@ViewById(R.id.locationText)
TextView locationText;
@ViewById(R.id.tabs)
PagerSlidingTabStrip mTabs;
@ViewById(R.id.pager)
ViewPager mViewPager;
// @ViewInject(R.id.navigationDrawerListViewWrapper)
// NavigationDrawerView mNavigationDrawerListViewWrapper;
@ViewById(R.id.linearDrawer)
LinearLayout mLinearDrawerLayout;
@ViewById(R.id.drawerLayout)
DrawerLayout mDrawerLayout;
// @ViewInject(R.id.leftDrawerListView)
// ListView leftDrawerListView;
private ActionBarDrawerToggle mDrawerToggle;
private DrawerArrowDrawable drawerArrow;
// public ToadyFragment todayFragment;
// private List<NavigationDrawerItem> navigationItems;
// private ActionBar actionBar;
private LocationClient mLocationClient;
private Application mApplication;
private static final int LOACTION_OK = 0;
private static final int UPDATE_MEMORY_PERCENT = 2;
@ViewById(R.id.lv_weather)
ListView mWeatherListView;
private Handler mHandler = new Handler() {
public void handleMessage(android.os.Message msg) {
switch (msg.what) {
case LOACTION_OK:
String cityName = (String) msg.obj;
locationText.setText("当前位置 :" + cityName);
break;
case UPDATE_MEMORY_PERCENT:
int progress = (int) (Utils.getAvailMemory() * 100 / Utils.getTotalMemory());
memory_progress.setProgress(100 - progress);
break;
default:
break;
}
}
};
private ViewPager.OnPageChangeListener mTabsOnPageChangeListener = new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
ViewHelper.setTranslationY(mTabs, 0);
}
@Override
public void onPageSelected(int position) {
for (int i = 0; i < mTabsLinearLayout.getChildCount(); i++) {
TextView tv = (TextView) mTabsLinearLayout.getChildAt(i);
if (i == position) {
tv.setTextColor(getResources().getColor(R.color.cornflower_blue));
tv.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/Roboto-Medium.ttf"));
} else {
tv.setTextColor(getResources().getColor(R.color.cornflower_blue));
tv.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/Roboto-Light.ttf"));
}
}
}
@Override
public void onPageScrollStateChanged(int state) {
}
};
@AfterViews
void initActivity() {
initView();
if (batteryObserver != null) {
batteryObserver.register();
batteryObserver.setOnBatteryChange(this);
}
}
private void initView() {
// TODO Auto-generated method stub
setTitle(R.string.app_name);
PieControl mPieControl = new PieControl(MainAppActivity.this, this);
mPieControl.attachToContainer(contentFrame);
mSectionsPagerAdapter = new SectionsPagerAdapter(getSupportFragmentManager());
// Set up the ViewPager with the sections adapter.
mViewPager.setAdapter(mSectionsPagerAdapter);
mTabs.setAllCaps(false);
mTabs.setShouldExpand(true);
mTabs.setTextSize(Utils.dp2px(this, 18));
// mTabs.setUnderlineColor(getResources().getColor(R.color.gray5));
mTabs.setUnderlineHeight(Utils.dp2px(this, 1));
mTabs.setTabBackground(R.drawable.selector_bg_tab);
mTabs.setDividerColor(getResources().getColor(android.R.color.transparent));
mTabs.setIndicatorColorResource(R.color.cornflower_blue);
mTabs.setIndicatorHeight(Utils.dp2px(this, 4));
mTabs.setOnPageChangeListener(mTabsOnPageChangeListener);
mTabs.setViewPager(mViewPager);
// Set first tab selected
mTabsLinearLayout = ((LinearLayout) mTabs.getChildAt(0));
for (int i = 0; i < mTabsLinearLayout.getChildCount(); i++) {
TextView tv = (TextView) mTabsLinearLayout.getChildAt(i);
if (i == 0) {
tv.setTextColor(getResources().getColor(R.color.cornflower_blue));
tv.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/Roboto-Medium.ttf"));
} else {
tv.setTextColor(getResources().getColor(R.color.cornflower_blue));
tv.setTypeface(Typeface.createFromAsset(getAssets(), "fonts/Roboto-Light.ttf"));
}
}
/*
* navigationItems = new ArrayList<NavigationDrawerItem>();
* navigationItems.add(new
* NavigationDrawerItem(getString(R.string.about), true));
* navigationItems.add(new
* NavigationDrawerItem(getString(R.string.settings), true));
* mNavigationDrawerListViewWrapper.replaceWith(navigationItems);
*/
mDrawerToggle = new ActionBarDrawerToggle(this, mDrawerLayout, drawerArrow, R.string.navigation_drawer_open, R.string.navigation_drawer_close) {
public void onDrawerClosed(View view) {
super.onDrawerClosed(view);
supportInvalidateOptionsMenu();
}
public void onDrawerOpened(View drawerView) {
super.onDrawerOpened(drawerView);
supportInvalidateOptionsMenu();
}
};
mDrawerLayout.setDrawerListener(mDrawerToggle);
SLAppication.mListeners.add(this);
mApplication = SLAppication.getInstance();
batteryObserver = BatteryObserver.getInstance(this);
mLocationClient = ((SLAppication) mApplication).getLocationClient();
mLocationClient.registerLocationListener(mLocationListener);
// if (TextUtils.isEmpty(mSpUtil.getCity())) {
if (NetUtil.isNetworkConnected()) {
mLocationClient.start();
mLocationClient.requestLocation();
locationText.setText("正在定位...");
} else {
Toast.makeText(SLAppication.getContext(), R.string.net_err, Toast.LENGTH_SHORT).show();
}
}
@Click(R.id.locationBtn)
void locationRefresh() {
if (NetUtil.isNetworkConnected()) {
if (!mLocationClient.isStarted())
mLocationClient.start();
mLocationClient.requestLocation();
locationText.setText("正在定位...");
} else {
locationText.setText(R.string.net_err);
}
}
@Click(R.id.memory_progress)
void clearMemory() {
final long buforeMemory = Utils.getAvailMemory() / (1024 * 1024);
new Thread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
Looper.prepare();
Utils.clearBackMemory();
runOnUiThread(new Runnable() {
@Override
public void run() {
// TODO Auto-generated method stub
String str = "清理" + (Utils.getAvailMemory() / (1024 * 1024) - buforeMemory) + "MB内存";
ToastUtil.showShort(str);
int finalprogress = (int) (Utils.getAvailMemory() * 100 / Utils.getTotalMemory());
memory_progress.setProgress(100 - finalprogress);
}
});
Looper.loop();
//
}
}).start();
}
@Click(R.id.exitRipView)
void exitApp() {
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
rootBattryView.onResume();
mHandler.sendEmptyMessage(UPDATE_MEMORY_PERCENT);
}
@Override
protected void onPause() {
// TODO Auto-generated method stub
super.onPause();
rootBattryView.onPause();
}
@Override
protected void onPostCreate(Bundle savedInstanceState) {
super.onPostCreate(savedInstanceState);
mDrawerToggle.syncState();
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
super.onConfigurationChanged(newConfig);
mDrawerToggle.onConfigurationChanged(newConfig);
}
// region QuickReturnInterface Methods
@Override
public PagerSlidingTabStrip getTabs() {
return mTabs;
}
/**
* A {@link android.support.v13.app.FragmentPagerAdapter} that returns a fragment corresponding to one of the sections/tabs/pages.
*/
public class SectionsPagerAdapter extends FragmentPagerAdapter {
public SectionsPagerAdapter(FragmentManager fm) {
super(fm);
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
return new BeautyFragment();
case 1:
return new ToadyFragment_();
case 2:
return new RecommendFragment();
case 3:
return new AppManagerFragments();
default:
return new RecommendFragment();
}
}
@Override
public int getCount() {
return 4;
}
@Override
public CharSequence getPageTitle(int position) {
switch (position) {
case 0:
return getString(R.string.beauty);
case 1:
return getString(R.string.discover);
case 2:
return getString(R.string.home);
case 3:
return getString(R.string.activity);
}
return null;
}
}
@Override
protected void onStop() {
// TODO Auto-generated method stub
super.onStop();
}
@Override
protected void onDestroy() {
// TODO Auto-generated method stub
super.onDestroy();
if (batteryObserver != null) {
batteryObserver.unRegister();
}
}
BDLocationListener mLocationListener = new BDLocationListener() {
@Override
public void onReceivePoi(BDLocation arg0) {
// do nothing
}
@Override
public void onReceiveLocation(BDLocation location) {
// mActionBar.setProgressBarVisibility(View.GONE);
// mUpdateBtn.setVisibility(View.VISIBLE);
// mUpdateProgressBar.setVisibility(View.GONE);
if (location == null || TextUtils.isEmpty(location.getCity())) {
return;
}
// String cityName = location.getCity();
String districtName = location.getDistrict();
mLocationClient.stop();
Message msg = mHandler.obtainMessage();
msg.what = LOACTION_OK;
msg.obj = districtName;
mHandler.sendMessage(msg);
}
};
/*
* @OnItemClick(R.id.leftDrawerListView) public void OnItemClick(int
* position, long id) { Log.e("YM", "position:" + position + "id:" + id); if
* (mDrawerLayout.isDrawerOpen(mLinearDrawerLayout)) {
* mDrawerLayout.closeDrawer(mLinearDrawerLayout);
* onNavigationDrawerItemSelected(position); selectItem(position); } }
*/
/*
* private void selectItem(int position) {
*
* if (leftDrawerListView != null) {
* leftDrawerListView.setItemChecked(position, true); //
* navigationItems.get(position).setSelected(true);
* actionBar.setTitle(navigationItems.get(position).getItemName()); }
*
* if (mLinearDrawerLayout != null) {
* mDrawerLayout.closeDrawer(mLinearDrawerLayout); } }
*
* private void onNavigationDrawerItemSelected(int position) { switch
* (position) { case 0: break; case 1: break; }
*
* }
*/
@Override
public void onCityComplite() {
// TODO Auto-generated method stub
}
@Override
public void onNetChange() {
// TODO Auto-generated method stub
if (!NetUtil.isNetworkConnected())
Toast.makeText(SLAppication.getContext(), R.string.net_err, Toast.LENGTH_SHORT).show();
}
@Override
public void onChange(int status, int level, int scale) {
// TODO Auto-generated method stub
rootBattryView.onBattery(status, level, scale);
rootBattryView.onUpdate();
}
}