Java tutorial
/******************************************************************************* * Copyright 2012-present Pixate, Inc. * * 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.pixate.freestyle; import android.annotation.SuppressLint; import android.os.Bundle; import android.support.v4.app.Fragment; import android.support.v4.app.FragmentActivity; import android.support.v4.app.FragmentTabHost; import android.util.Log; import android.view.Window; import android.widget.ImageView; import android.widget.ImageView.ScaleType; import android.widget.TabHost.OnTabChangeListener; import android.widget.TabHost.TabSpec; import android.widget.TabWidget; import com.pixate.freestyle.fragment.ContainerFragment; import com.pixate.freestyle.fragment.containers.ButtonsContainer; import com.pixate.freestyle.fragment.containers.GridViewContainer; import com.pixate.freestyle.fragment.containers.IconsContainer; import com.pixate.freestyle.fragment.containers.ListViewContainer; import com.pixate.freestyle.fragment.containers.TypographyContainer; /** * The main frame activity for application. * * @author AlexHong */ public class MainFrameActivity extends FragmentActivity implements OnTabChangeListener { /** Tag for log. */ public static final String TAG = MainFrameActivity.class.getSimpleName(); /** The tab host, supports fragment. */ private FragmentTabHost tabHost; /** The tab widget, located at the bottom of activity. */ private TabWidget tabs; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); /** Set this theme for default switch box */ setTheme(R.style.AppThemeLight); requestWindowFeature(Window.FEATURE_NO_TITLE); setContentView(R.layout.activity_main); initTabs(); com.pixate.freestyle.PixateFreestyle.init(this); } @SuppressLint("NewApi") private void initTabs() { tabHost = (FragmentTabHost) findViewById(android.R.id.tabhost); tabHost.setup(this, getSupportFragmentManager(), android.R.id.tabcontent); tabHost.setOnTabChangedListener(this); tabs = (TabWidget) findViewById(android.R.id.tabs); // tabs.setShowDividers(TabWidget.SHOW_DIVIDER_NONE); addTab(R.drawable.tab_icon_typography, TypographyContainer.class); addTab(R.drawable.tab_icon_listview, ListViewContainer.class); addTab(R.drawable.tab_icon_gridview, GridViewContainer.class); addTab(R.drawable.tab_icon_buttons, ButtonsContainer.class); addTab(R.drawable.tab_icon_icons, IconsContainer.class); } /** * Convenient method to add a tab to the tab widget at bottom. * * @param resId The resource id of image shown on indicator * @param content The class type of content */ private void addTab(int resId, Class<? extends Fragment> content) { ImageView indicator = new ImageView(this); indicator.setScaleType(ScaleType.CENTER_INSIDE); indicator.setBackgroundResource(R.drawable.tab_bg); indicator.setImageResource(resId); TabSpec spec = tabHost.newTabSpec(content.getSimpleName()).setIndicator(indicator); tabHost.addTab(spec, content, null); } @Override public void onTabChanged(String tabId) { // TODO tab changed, do extra stuff here, such as changing icon shown in // title Log.i(TAG, "onTabChanged: " + tabId); } @Override public void onBackPressed() { String currTag = tabHost.getCurrentTabTag(); ContainerFragment container = (ContainerFragment) getSupportFragmentManager().findFragmentByTag(currTag); if (!container.popFragment()) { super.onBackPressed(); } } }