package com.dinhcv.lifelogpedometer.activity; import android.Manifest; import android.content.Intent; import android.os.Build; import android.os.Bundle; import android.support.design.widget.TabLayout; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentManager; import android.support.v4.app.FragmentPagerAdapter; import android.support.v4.content.PermissionChecker; import android.support.v4.view.ViewPager; import android.support.v7.widget.PopupMenu; import android.support.v7.widget.Toolbar; import android.view.Gravity; import android.view.MenuItem; import android.view.View; import android.view.Window; import android.view.WindowManager; import android.widget.ImageView; import android.widget.PopupWindow; import android.widget.TextView; import android.widget.Toast; import com.dinhcv.lifelogpedometer.R; import com.dinhcv.lifelogpedometer.model.Shareprefer.Setting; import com.dinhcv.lifelogpedometer.utils.Debug; import com.dinhcv.lifelogpedometer.utils.Utils; import java.util.ArrayList; import java.util.List; public class PedometerActivity extends ActivityBase { private Toolbar mToolBar; private ViewPager mViewPager; private int mCurrentTab = 0; private TabLayout mTabLayout; private TextView tvPageTitle; private ImageView ivHome; private ImageView imvMenu; private TopFragment mTopFragment; private HistoryFragment mHistoryFragment; private SnsFragment mSnsFragment; private int[] tabIcons = { com.dinhcv.lifelogpedometer.R.drawable.ic_date, R.drawable.ic_history, R.drawable.ic_rank, R.drawable.ic_map, R.drawable.ic_sns }; public enum TAB { DATE_TAB(0), HISTORY_TAB(1), RANK_TAB(2), MAP_TAB(3), SNS_TAB(4); private final int index; TAB(int index) { this.index = index; } public int getValue() { return index; } } @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pedometer); getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_ADJUST_RESIZE); initView(); if (android.support.v4.BuildConfig.DEBUG && Build.VERSION.SDK_INT >= 23 && PermissionChecker .checkSelfPermission(this, Manifest.permission.WRITE_EXTERNAL_STORAGE) != PermissionChecker.PERMISSION_GRANTED) { requestPermissions(new String[]{Manifest.permission.WRITE_EXTERNAL_STORAGE}, 0); } } private void initView() { tvPageTitle = (TextView) findViewById(R.id.tv_pageTitle); ivHome = (ImageView) findViewById(R.id.iv_home); imvMenu = (ImageView) findViewById(R.id.imv_menu); mViewPager = (ViewPager) findViewById(R.id.viewpager); mViewPager.setOffscreenPageLimit(5); setupViewPager(mViewPager); mTabLayout = (TabLayout) findViewById(R.id.tabs); mTabLayout.setupWithViewPager(mViewPager); //Set tab selected TabLayout.Tab tab = mTabLayout.getTabAt(mCurrentTab); if (tab != null) { tab.select(); } changeColorStatusBar(); setupTabIcons(); //SonLT Add ivHome.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { switch (mCurrentTab){ case 0: mTopFragment.clickBackToHome(); break; case 1: mHistoryFragment.clickBackToHome(); break; case 4: mSnsFragment.handleToolbarClick(0); break; default: break; } } }); imvMenu.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //Creating the instance of PopupMenu PopupMenu popup = new PopupMenu(PedometerActivity.this, imvMenu); //Inflating the Popup using xml file popup.getMenuInflater().inflate(R.menu.main, popup.getMenu()); //registering popup with OnMenuItemClickListener popup.setOnMenuItemClickListener(new PopupMenu.OnMenuItemClickListener() { public boolean onMenuItemClick(MenuItem item) { switch (item.getItemId()){ case R.id.action_setting: Toast.makeText( PedometerActivity.this, "Have not spec : " + item.getTitle(), Toast.LENGTH_SHORT ).show(); break; case R.id.action_profile: Toast.makeText( PedometerActivity.this, "Have not spec : " + item.getTitle(), Toast.LENGTH_SHORT ).show(); break; case R.id.action_logout: logout(); break; default: Debug.warn("Not run here"); break; } return true; } }); popup.show(); //showing popup menu } }); //closing the setOnClickListener method } private void setupTabIcons() { mTabLayout.getTabAt(0).setIcon(tabIcons[0]); mTabLayout.getTabAt(1).setIcon(tabIcons[1]); mTabLayout.getTabAt(2).setIcon(tabIcons[2]); mTabLayout.getTabAt(3).setIcon(tabIcons[3]); mTabLayout.getTabAt(4).setIcon(tabIcons[4]); } private void setTabView() { for (int i = 0; i < mTabLayout.getTabCount(); i++) { TextView tv = (TextView) mTabLayout.getChildAt(0).findViewById(android.R.id.title); //tv.setTextColor(Color.BLACK); tv.setPadding(10, 10, 10, 15); tv.setTextSize((float) 20.0); //tv.setTypeface(null, Typeface.BOLD); //tv.setBackgroundResource(R.drawable.icon); tv.setHeight(100); tv.setWidth(100); } } private void changeColorStatusBar() { if (android.os.Build.VERSION.SDK_INT >= 21) { Window window = this.getWindow(); window.addFlags(WindowManager.LayoutParams.FLAG_DRAWS_SYSTEM_BAR_BACKGROUNDS); window.clearFlags(WindowManager.LayoutParams.FLAG_TRANSLUCENT_STATUS); // window.setStatusBarColor(Utils.getColorWrapper(this, R.color.white)); } } // @Override // public boolean onCreateOptionsMenu(Menu menu) { // getMenuInflater().inflate(R.menu.setting_menu, menu); // return true; // } @Override public boolean onOptionsItemSelected(MenuItem item) { return super.onOptionsItemSelected(item); } /** * Setup pager * * @param viewPager: view pager */ private void setupViewPager(ViewPager viewPager) { ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager()); mTopFragment = new TopFragment(); adapter.addFragment(mTopFragment, getString(R.string.date)); mHistoryFragment = new HistoryFragment(); adapter.addFragment(mHistoryFragment, getString(R.string.history)); adapter.addFragment(new RankFragment(), getString(R.string.ranking)); adapter.addFragment(new MapFragment(), getString(R.string.map)); mSnsFragment = new SnsFragment(); adapter.addFragment(mSnsFragment, getString(R.string.sns)); viewPager.setAdapter(adapter); } /** * Class FragmentPagerAdapter */ class ViewPagerAdapter extends FragmentPagerAdapter { private final List mFragmentList = new ArrayList<>(); private final List mFragmentTitleList = new ArrayList<>(); public ViewPagerAdapter(FragmentManager manager) { super(manager); } @Override public Fragment getItem(int position) { return mFragmentList.get(position); } @Override public int getCount() { return mFragmentList.size(); } private void addFragment(Fragment fragment, String title) { mFragmentList.add(fragment); mFragmentTitleList.add(title); } @Override public CharSequence getPageTitle(int position) { return mFragmentTitleList.get(position); } } @Override protected void onResume() { super.onResume(); mViewPager.addOnPageChangeListener(mPageChangeListener); } @Override protected void onPause() { super.onPause(); mViewPager.removeOnPageChangeListener(mPageChangeListener); } private int mLastTab = 0; private final ViewPager.OnPageChangeListener mPageChangeListener = new ViewPager .OnPageChangeListener () { @Override public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) { //Nothing here } @Override public void onPageSelected(int position) { ViewPagerAdapter adapter = (ViewPagerAdapter) mViewPager.getAdapter(); SettingFragmentPresenter presenter = (SettingFragmentPresenter) adapter.getItem (position); switch (position) { case 4: tvPageTitle.setText(getString(R.string.sns_fragment)); ivHome.setVisibility(View.VISIBLE); break; case 1: tvPageTitle.setText(getString(R.string.today)); ivHome.setVisibility(View.VISIBLE); break; case 0: tvPageTitle.setText(getString(R.string.home)); ivHome.setVisibility(View.GONE); break; default: tvPageTitle.setText(getString(R.string.home)); ivHome.setVisibility(View.GONE); break; } // if (position == 1){ // tvPageTitle.setText(getString(R.string.today)); // ivHome.setVisibility(View.VISIBLE); // }else { // tvPageTitle.setText(getString(R.string.home)); // ivHome.setVisibility(View.GONE); // } presenter.onInvalidate(false); mLastTab = position; mCurrentTab = position; } @Override public void onPageScrollStateChanged(int state) { //Nothing here if (state == ViewPager.SCROLL_STATE_SETTLING) { if (mLastTab >= 0) { ViewPagerAdapter adapter = (ViewPagerAdapter) mViewPager.getAdapter(); SettingFragmentPresenter presenter = (SettingFragmentPresenter) adapter .getItem(mLastTab); Debug.normal("Save data in tab:" + mLastTab); presenter.onSaveData(); } } } }; public void setVisibleIconHome(boolean isVisible){ if (isVisible) { ivHome.setVisibility(View.VISIBLE); }else { ivHome.setVisibility(View.GONE); } setTitleTop(isVisible); } public void setTitleTop(boolean isVisible){ if (isVisible) { tvPageTitle.setText(getString(R.string.today)); }else { tvPageTitle.setText(getString(R.string.home)); } } private void logout(){ // clear data Setting.clearUserIdSharepre(PedometerActivity.this); // go to login Intent intent = new Intent(PedometerActivity.this, LoginActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); } }