com.kesar.news.module.MainActivity.java Source code

Java tutorial

Introduction

Here is the source code for com.kesar.news.module.MainActivity.java

Source

/*
 * Copyright [2016] [Clayman Twinkle]
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 */

package com.kesar.news.module;

import android.content.Intent;
import android.support.annotation.NonNull;
import android.support.design.widget.NavigationView;
import android.support.v4.app.Fragment;
import android.support.v4.view.GravityCompat;
import android.support.v4.widget.DrawerLayout;
import android.support.v7.app.ActionBarDrawerToggle;
import android.support.v7.widget.Toolbar;
import android.util.SparseArray;
import android.view.MenuItem;

import com.kesar.news.R;
import com.kesar.news.module.about.AboutMeActivity;
import com.kesar.news.module.anecdotes.AnecdotesFragment;
import com.kesar.news.module.news.NewsFragment;
import com.kesar.news.module.tourist.TouristFragment;

import org.kesar.lazy.primary.android.activity.BaseActivity;
import org.kesar.lazy.primary.utils.ToastUtils;

import butterknife.BindView;

public class MainActivity extends BaseActivity {

    @BindView(R.id.toolbar)
    Toolbar mToolbar;
    @BindView(R.id.drawer_layout)
    DrawerLayout mDrawerLayout;
    @BindView(R.id.nav_view)
    NavigationView mNavigationView;

    private SparseArray<Fragment> mFragmentArray = new SparseArray<>();

    @Override
    protected int getLayoutId() {
        return R.layout.activity_main;
    }

    @Override
    protected void afterBindView() {
        super.afterBindView();

        initToolBar();

        mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
            @Override
            public boolean onNavigationItemSelected(@NonNull MenuItem item) {
                int id = item.getItemId();
                Fragment fragment = mFragmentArray.get(id);
                if (fragment == null) {
                    switch (id) {
                    case R.id.nav_news:
                        fragment = NewsFragment.newInstance();
                        break;
                    case R.id.nav_tourist:
                        fragment = TouristFragment.newInstance();
                        break;
                    case R.id.nav_anecdotes:
                        fragment = AnecdotesFragment.newInstance();
                        break;
                    case R.id.nav_about:
                        startActivity(new Intent(getApplicationContext(), AboutMeActivity.class));
                        closeDrawer();
                        return true;
                    default:
                        fragment = new Fragment();
                        break;
                    }
                    if (fragment != null) {
                        mFragmentArray.put(id, fragment);
                    }
                }
                changeFragment(R.id.content_fragment, fragment);
                closeDrawer();
                return true;
            }
        });
        Fragment currentFragment = NewsFragment.newInstance();
        mFragmentArray.put(R.id.nav_news, currentFragment);
        changeFragment(R.id.content_fragment, currentFragment);
    }

    private long lastOnBackPressedTime = 0;

    @Override
    public void onBackPressed() {
        if (isDrawerOpen()) {
            closeDrawer();
        } else {
            // 
            long currentTime = System.currentTimeMillis();
            if (currentTime - lastOnBackPressedTime < 2000) {
                super.onBackPressed();
            } else {
                ToastUtils.show(getApplicationContext(), R.string.on_back_press_again_to_exit);
            }
            lastOnBackPressedTime = currentTime;
        }
    }

    /**
     * ?tool bar
     */
    private void initToolBar() {
        setSupportActionBar(mToolbar);

        ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(this, mDrawerLayout, mToolbar,
                R.string.navigation_drawer_open, R.string.navigation_drawer_close);
        mDrawerLayout.setDrawerListener(toggle);
        toggle.syncState();
    }

    /**
     * Drawer?
     *
     * @return true false 
     */
    private boolean isDrawerOpen() {
        return mDrawerLayout.isDrawerOpen(GravityCompat.START);
    }

    /**
     * Drawer
     */
    private void closeDrawer() {
        mDrawerLayout.closeDrawer(GravityCompat.START);
    }
}