drawnzer.anurag.kollosal.KollosalPlayer.java Source code

Java tutorial

Introduction

Here is the source code for drawnzer.anurag.kollosal.KollosalPlayer.java

Source

/**
 * Copyright(c) 2014 DRAWNZER.ORG PROJECTS -> ANURAG
 * 
 * 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.
 *                             
 *                             anuraxsharma1512@gmail.com
 *
 */

package drawnzer.anurag.kollosal;

import android.app.ActionBar;

import android.content.SharedPreferences;
import android.graphics.drawable.ColorDrawable;
import android.graphics.drawable.Drawable;
import android.os.Build;
import android.os.Bundle;
import android.support.v4.app.ActionBarDrawerToggle;
import android.support.v4.app.FragmentActivity;
import android.support.v4.view.ViewPager;
import android.support.v4.widget.DrawerLayout;
import android.util.TypedValue;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.View;
import android.widget.AdapterView;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;

import drawnzer.anurag.kollosal.adapters.DrawerMenuAdapter;
import drawnzer.anurag.kollosal.adapters.KollosalFragmentAdapter;
import drawnzer.anurag.kollosal.adapters.ThemeAdapter;
import drawnzer.anurag.kollosal.fragments.VideoFragment;

/**
 * 
 * @author ANURAG....
 *
 */

public class KollosalPlayer extends FragmentActivity {

    //view pager for fragments....
    private ViewPager pager;

    //pages slide tab strip for view pager....
    private PagerSlidingTabStrip pagerSlideTab;

    //current color used in theme....
    private int currentColor;

    //preferences of the app....
    private SharedPreferences prefs;

    //if true drawer is open....
    private boolean isDrawerOpen;

    //slide drawer menu....
    private DrawerLayout slidingDrawer;

    //action bar toggle....
    private ActionBarDrawerToggle toggle;

    //main list view in slide drawer menu....
    private ListView lsMenu;

    //theme listview in slide drawer menu
    private ListView lsTheme;

    //action bar of main activity....
    private ActionBar actionBar;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        prefs = getSharedPreferences("APP_SETTINGS", 0);
        currentColor = prefs.getInt("APP_COLOR", 0xFFC74B46);

        setContentView(R.layout.combined_ui);
        isDrawerOpen = false;
        slidingDrawer = (DrawerLayout) findViewById(R.id.slideDrawer);
        lsMenu = (ListView) findViewById(R.id.list_slidermenu);
        lsTheme = (ListView) findViewById(R.id.list_slidermenu_theme);
        lsTheme.setSelector(R.drawable.button_click);
        lsMenu.setSelector(R.drawable.button_click);

        lsMenu.setAdapter(new DrawerMenuAdapter(KollosalPlayer.this));
        lsTheme.setAdapter(new ThemeAdapter(KollosalPlayer.this));

        actionBar = getActionBar();

        actionBar.setDisplayHomeAsUpEnabled(true);
        actionBar.setHomeButtonEnabled(true);

        actionBar.setIcon(R.drawable.red_kollosal);

        toggle = new ActionBarDrawerToggle(KollosalPlayer.this, slidingDrawer, R.drawable.red_kollosal,
                R.string.settings, R.string.app_name) {
            public void onDrawerClosed(View view) {
                getActionBar().setTitle(getString(R.string.app_name));
                isDrawerOpen = false;
                if (lsTheme.getVisibility() == View.VISIBLE)
                    lsTheme.setVisibility(View.GONE);
            }

            public void onDrawerOpened(View drawerView) {
                getActionBar().setTitle(getString(R.string.settings));
                isDrawerOpen = true;
            }
        };

        lsMenu.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int position, long arg3) {
                // TODO Auto-generated method stub
                if (position == 5) {//handling click on theme option...
                    if (lsTheme.getVisibility() == View.GONE)
                        lsTheme.setVisibility(View.VISIBLE);
                    else
                        lsTheme.setVisibility(View.GONE);
                }
            }
        });

        lsTheme.setOnItemClickListener(new AdapterView.OnItemClickListener() {
            @Override
            public void onItemClick(AdapterView<?> arg0, View arg1, int arg2, long arg3) {
                // TODO Auto-generated method stub

                changeColor(getResources().getColor(Constant.COLORS[arg2]));

                //applying color change to system views....
                init_system_ui();

                SharedPreferences.Editor edit = prefs.edit();
                edit.putInt("APP_COLOR", getResources().getColor(Constant.COLORS[arg2]));
                edit.putInt("SEMI_APP_COLOR", getResources().getColor(Constant.SEMI_COLORS[arg2]));
                edit.putInt("CONTROLLER_COLOR", getResources().getColor(Constant.CONTROLLER_COLORS[arg2]));
                edit.putInt("APP_ICON", arg2);
                edit.commit();
            }
        });

        slidingDrawer.setDrawerListener(toggle);

        pager = (ViewPager) findViewById(R.id.pager);
        pagerSlideTab = (PagerSlidingTabStrip) findViewById(R.id.tabs);

        pager.setAdapter(new KollosalFragmentAdapter(getSupportFragmentManager()));

        final int pageMargin = (int) TypedValue.applyDimension(TypedValue.COMPLEX_UNIT_DIP, 4,
                getResources().getDisplayMetrics());
        pager.setPageMargin(pageMargin);
        pagerSlideTab.setViewPager(pager);
        changeColor(currentColor);

    }

    @Override
    public void onResume() {
        super.onResume();
        init_system_ui();
    }

    private void init_system_ui() {
        // TODO Auto-generated method stub
        if (Build.VERSION.SDK_INT < Build.VERSION_CODES.KITKAT)
            return;

        SystemBarTintManager tinter = new SystemBarTintManager(KollosalPlayer.this);
        SystemBarTintManager.SystemBarConfig conf = tinter.getConfig();
        boolean isNavBar = conf.hasNavigtionBar();
        if (isNavBar) {
            tinter.setNavigationBarTintEnabled(true);
            tinter.setNavigationBarTintColor(currentColor);
        }
        tinter.setStatusBarTintEnabled(true);
        tinter.setStatusBarTintColor(currentColor);
        LinearLayout ls = (LinearLayout) findViewById(R.id.lists_layout);
        LinearLayout frame = (LinearLayout) findViewById(R.id.frame_container);
        frame.setPadding(0, getStatusBarHeight(), 0, isNavBar ? getNavigationBarHeight() : 0);
        ls.setPadding(0, getStatusBarHeight(), 0, isNavBar ? getNavigationBarHeight() : 0);
    }

    /**
     * 
     * @return height of status bar along with height of action bar....
     */
    private int getStatusBarHeight() {
        int res = 0;
        int resId = getResources().getIdentifier("status_bar_height", "dimen", "android");
        if (resId > 0)
            res = getResources().getDimensionPixelSize(resId);
        TypedValue val = new TypedValue();
        getTheme().resolveAttribute(android.R.attr.actionBarSize, val, true);
        int action_size = TypedValue.complexToDimensionPixelSize(val.data, getResources().getDisplayMetrics());
        res += action_size;
        return res;
    }

    /**
     * 
     * @return the height of navigation bar....
     */
    private int getNavigationBarHeight() {
        int res = 0;
        int resId = getResources().getIdentifier("navigation_bar_height", "dimen", "android");
        if (resId > 0)
            res = getResources().getDimensionPixelSize(resId);
        return res;
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu items for use in the action bar
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.action_bar_menu, menu);
        return super.onCreateOptionsMenu(menu);
    }

    private void changeColor(int newColor) {
        //MusicFragment.getSlideLayout().setBackgroundColor(newColor);
        //pagerSlideTab.setIndicatorColor(getResources().getColor(R.color.semi_white));
        RelativeLayout ml = (RelativeLayout) findViewById(R.id.main_ui);
        ml.setBackgroundColor(newColor);
        LinearLayout listLayout = (LinearLayout) findViewById(R.id.lists_layout);
        listLayout.setBackgroundColor(newColor);
        ColorDrawable color = new ColorDrawable(newColor);
        lsMenu.setDivider(color);
        lsTheme.setDivider(color);
        Drawable colorDrawable = new ColorDrawable(newColor);
        actionBar.setBackgroundDrawable(colorDrawable);
        // http://stackoverflow.com/questions/11002691/actionbar-setbackgrounddrawable-nulling-background-from-thread-handler
        actionBar.setDisplayShowTitleEnabled(false);
        actionBar.setDisplayShowTitleEnabled(true);
        currentColor = newColor;
    }

    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        if (isDrawerOpen) {
            slidingDrawer.closeDrawers();
            if (lsTheme.getVisibility() == View.VISIBLE)
                lsTheme.setVisibility(View.GONE);
        } else if (VideoFragment.isSliderOpened() && pager.getCurrentItem() == 0) {
            VideoFragment.notifyPanelClose();
        } else if (VideoFragment.isSliderOpened() && pager.getCurrentItem() != 0) {
            pager.setCurrentItem(0);
        } else if (VideoFragment.isFolderExpanded() && pager.getCurrentItem() == 0) {
            //collapsing the opened folder....
            VideoFragment.collapseFolder();
        } else {
            android.os.Process.killProcess(android.os.Process.myPid());
        }
    }
}