/** * Copyright (c) 2015 unfoldingWord * http://creativecommons.org/licenses/MIT/ * See LICENSE file for details. * Contributors: * PJ Fechner <pj@actsmedia.com> */ package view; import android.content.Context; import android.view.View; import android.view.ViewGroup; import android.widget.ImageButton; import android.widget.ImageView; import android.widget.LinearLayout; import android.widget.RelativeLayout; import org.unfoldingword.mobile.R; import java.util.ArrayList; import java.util.List; /** * Created by Fechner on 8/9/15. */ public class UWTabBar { public interface BottomBarListener{ void buttonPressedAtIndex(int index); } private Context context; private ViewGroup parentLayout; private LinearLayout baseLayout; private List<ImageButton> buttons; private BottomBarListener listener; public UWTabBar(Context context, int[] buttonImages, ViewGroup layout, BottomBarListener listener) { this.context = context; parentLayout = layout; this.listener = listener; setupViews(buttonImages); } public Context getContext() { return context; } public ViewGroup getParentLayout() { return parentLayout; } public LinearLayout getBaseLayout() { return baseLayout; } private void setupViews(int[] buttons){ setupBaseLayout(); setupButtons(buttons); } private void setupBaseLayout(){ baseLayout = new LinearLayout(context); baseLayout.setBackgroundResource(R.color.primary); baseLayout.setWeightSum((float) 1.0); parentLayout.addView(baseLayout); RelativeLayout.LayoutParams params = new RelativeLayout.LayoutParams(baseLayout.getLayoutParams()); params.addRule(RelativeLayout.ALIGN_PARENT_BOTTOM); params.width = ViewGroup.LayoutParams.MATCH_PARENT; params.height = getSizeForDp(40); baseLayout.setLayoutParams(params); } private void setupButtons(int[] buttonImageRes){ buttons = new ArrayList<>(buttonImageRes.length); for(int i = 0; i < buttonImageRes.length; i++){ ImageButton button = createButton(i, buttonImageRes[i], ((float) 1.0 / (float) buttonImageRes.length)); buttons.add(i, button); baseLayout.addView(button); } } private ImageButton createButton(int index, int imageResource, float weight){ ImageButton button = new ImageButton(context); button.setBackgroundResource(R.drawable.basic_button_selector); button.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.WRAP_CONTENT, LinearLayout.LayoutParams.WRAP_CONTENT, weight)); int padding = getButtonPadding(); button.setScaleType(ImageView.ScaleType.CENTER_INSIDE); button.setPadding(padding, padding, padding, padding); button.setOnClickListener(new TabButtonListener(index)); button.setImageResource(imageResource); return button; } protected int getButtonPadding(){ return getSizeForDp(6); } // public void toggleHidden(){ // // setHidden(!hidden); // } // public void setHidden(boolean isHidden){ // // RelativeLayout.LayoutParams params = (RelativeLayout.LayoutParams) parentLayout.getLayoutParams(); // if(isHidden){ // params.addRule(RelativeLayout.BELOW, R.id.bottom_marker_layout); // } // else{ // params.removeRule(RelativeLayout.BELOW); // } // // parentLayout.setLayoutParams(params); // hidden = !hidden; // } private class TabButtonListener implements View.OnClickListener{ final int index; public TabButtonListener(int index) { this.index = index; } @Override public void onClick(View v) { listener.buttonPressedAtIndex(index); } } private int getSizeForDp(int sizeInDP){ return (int) (sizeInDP * getContext().getResources().getDisplayMetrics().density + 0.5f) ; } public void setImageAtIndex(int imageResource, int index){ buttons.get(index).setImageResource(imageResource); } public ImageButton getButton(int index){ return buttons.get(index); } }