Android Open Source - HydraListAndroid Expanding Layout






From Project

Back to project page HydraListAndroid.

License

The source code is released under:

Apache License

If you think the Android project HydraListAndroid listed in this page is inappropriate, such as containing malicious code/tools or violating the copyright, please email info at java2s dot com, thanks.

Java Source Code

/*
 * Copyright (C) 2013 The Android Open Source Project
 * /*from  ww w  .ja v  a 2s .  com*/
 * 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.fada21.android.hydralist.expandable;

import com.fada21.android.hydralist.expandable.interfaces.OnSizeChangedListener;

import android.content.Context;
import android.util.AttributeSet;
import android.widget.RelativeLayout;

/**
 * This layout is used to contain the extra information that will be displayed
 * when a certain cell is expanded. The custom relative layout is created in
 * order to achieve a fading affect of this layout's contents as it is being
 * expanded or collapsed as opposed to just fading the content in(out) after(before)
 * the cell expands(collapses).
 * 
 * During expansion, layout takes place so the full contents of this layout can
 * be displayed. When the size changes to display the full contents of the layout,
 * its height is stored. When the view is collapsing, this layout's height becomes 0
 * since it is no longer in the visible part of the cell.By overriding onMeasure, and
 * setting the height back to its max height, it is still visible during the collapse
 * animation, and so, a fade out effect can be achieved.
 */
public class ExpandingLayout extends RelativeLayout {

    private OnSizeChangedListener mSizeChangedListener;
    private int                   mExpandedHeight = -1;

    public ExpandingLayout(Context context) {
        super(context);
    }

    public ExpandingLayout(Context context, AttributeSet attrs) {
        super(context, attrs);
    }

    public ExpandingLayout(Context context, AttributeSet attrs, int defStyle) {
        super(context, attrs, defStyle);
    }

    protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
        if (mExpandedHeight > 0) {
            heightMeasureSpec = MeasureSpec.makeMeasureSpec(mExpandedHeight, MeasureSpec.AT_MOST);
        }
        super.onMeasure(widthMeasureSpec, heightMeasureSpec);
    }

    protected void onSizeChanged(int w, int h, int oldw, int oldh) {
        mExpandedHeight = h;
        // Notifies the list data object corresponding to this layout that its size has changed.
        mSizeChangedListener.onSizeChanged(h);
    }

    public int getExpandedHeight() {
        return mExpandedHeight;
    }

    public void setExpandedHeight(int expandedHeight) {
        mExpandedHeight = expandedHeight;
    }

    public void setSizeChangedListener(OnSizeChangedListener listener) {
        mSizeChangedListener = listener;
    }
}




Java Source Code List

com.fada21.android.hydralist.HydraListAdapter.java
com.fada21.android.hydralist.HydraListView.java
com.fada21.android.hydralist.data.HydraListDataProvider.java
com.fada21.android.hydralist.data.HydraListItem.java
com.fada21.android.hydralist.data.ListDataProvider.java
com.fada21.android.hydralist.dragable.DragableAdapterHelper.java
com.fada21.android.hydralist.dragable.DragableConsts.java
com.fada21.android.hydralist.dragable.DragableListViewDelegate.java
com.fada21.android.hydralist.dragable.interfaces.DragableListItem.java
com.fada21.android.hydralist.dragable.interfaces.OnItemMovedListener.java
com.fada21.android.hydralist.dragable.interfaces.Swappable.java
com.fada21.android.hydralist.expandable.BasicExpandableListItem.java
com.fada21.android.hydralist.expandable.ExpandableViewHolder.java
com.fada21.android.hydralist.expandable.ExpandingAdapterHelper.java
com.fada21.android.hydralist.expandable.ExpandingLayout.java
com.fada21.android.hydralist.expandable.ExpandingListViewDelegate.java
com.fada21.android.hydralist.expandable.interfaces.ExpandableListItem.java
com.fada21.android.hydralist.expandable.interfaces.OnSizeChangedListener.java
com.fada21.android.hydralist.helper.HydraListAdapterHelper.java
com.fada21.android.hydralist.helper.HydraListViewHolder.java
com.fada21.android.hydralist.helper.PlainAdapterHelper.java
com.fada21.android.hydralist.sample.CustomExpandingAdapterHelper.java
com.fada21.android.hydralist.sample.SampleConsts.java
com.fada21.android.hydralist.sample.SampleContents.java
com.fada21.android.hydralist.sample.SampleDataProvider.java
com.fada21.android.hydralist.sample.SampleHydraListActivity.java
com.fada21.android.hydralist.sample.SampleListItem.java
com.fada21.android.hydralist.sample.SamplePlainAdapterHelper.java
com.fada21.android.hydralist.sample.SampleViewHolder.java
com.fada21.android.hydralist.util.HydraListConsts.java
com.fada21.android.hydralist.util.HydraListUtils.java
com.fada21.android.hydralist.util.PublicListView.java