package v2.simpleUi; import java.util.ArrayList; import v2.simpleUi.customViews.ExpandableLinearLayout; import v2.simpleUi.customViews.ExpandableLinearLayout.OnExpandListener; import android.R; import android.content.Context; import android.view.View; import android.view.View.OnClickListener; import android.view.animation.Animation; import android.view.animation.RotateAnimation; import android.widget.ImageView; public class M_Container2 extends ArrayList<ModifierInterface> implements ModifierInterface { private OnExpandListener listener; private ExpandableLinearLayout expandablePanel; private boolean collapsed = false; public M_Container2(String title, boolean collapsed) { this(title); this.collapsed = collapsed; } public M_Container2(String title) { final M_IconButtonWithText expandButton = new M_IconButtonWithText( R.drawable.arrow_up_float) { @Override public void onClick(Context context, ImageView clickedButton) { expandablePanel.switchBetweenCollapsedAndExpandedMode(); } }; final M_Caption caption = new M_Caption(title, 0.8f); caption.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { expandablePanel.switchBetweenCollapsedAndExpandedMode(); } }); listener = new OnExpandListener() { @Override public void onExpandFinished(Context context, View content) { expandButton.setIconId(R.drawable.arrow_up_float); } @Override public void onCollapseFinished(Context context, View content) { expandButton.setIconId(R.drawable.arrow_down_float); } @Override public void onCollapseStart(Context context, ExpandableLinearLayout v) { ImageView b = expandButton.getImageButton(); if (b != null) { b.setAnimation(newRotateAnimation(b, 0, -180)); } } @Override public void onExpandStart(Context context, ExpandableLinearLayout v) { ImageView b = expandButton.getImageButton(); if (b != null) { b.setAnimation(newRotateAnimation(b, 0, 180)); } } private Animation newRotateAnimation(ImageView b, float x, float y) { // Create an animation instance Animation an = new RotateAnimation(x, y, Animation.RELATIVE_TO_SELF, 0.5f, Animation.RELATIVE_TO_SELF, 0.5f); // Set the animation's parameters an.setDuration(600); // duration in ms return an; } @Override public void onViewWasDrawnFirstTime(Context context, ExpandableLinearLayout expandableLinearLayout) { int height = caption.getHeightInPixels() + 13; expandableLinearLayout.setCollapsedHeight(height); if (collapsed) { expandablePanel.collapse(); } } }; initHeaderOfContainer(expandButton, caption); } public void initHeaderOfContainer(final M_IconButtonWithText expandButton, final M_Caption caption) { add(new M_LeftRight(expandButton, 1, caption, 5)); } @Override public boolean isEmpty() { // the first item is the caption return size() < 2; } @Override public View getView(Context context) { expandablePanel = new ExpandableLinearLayout(context, null, listener); for (int i = 0; i < this.size(); i++) { View v = this.get(i).getView(context); expandablePanel.addView(v); } for (ModifierInterface m : this) { } return expandablePanel; } @Override public boolean save() { boolean r = true; for (ModifierInterface m : this) { r &= m.save(); } return r; } }