Pre-reprint marked: http://blog.csdn.net/yoyo_newbie/article/details/47167933
Don't blow it, go straight to the subject.
The first step is to implement the combination of the head and the content first. Inherit the LinearLayout and let its 2 be arranged in a linear order. Inheriting LinearLayout benefits can extend a variety of pull-down, such as the ListView dropdown, the GridView drop-down, or the waterfall that can be implemented by the recycler.
1. This demo is a GIF play open Source Library and Recyclerview implementation, need to join the Open Source Library. In the app directory, add the following builder-gradle
Dependencies {    compile filetree (include: [' *.jar 'dir' Libs ')    ' COM.FELIPECSL: gifimageview:1.2.0'com.android.support:recyclerview-v7:22.2.0 '}    
Create a new drop-down drawing header file for Refresh_list_header, with the following details:
<?XML version="1.0"encoding="Utf-8"?><linearlayoutxmlns:Android="Http://schemas.android.com/apk/res/android"    Android: Layout_width="Match_parent"    Android: layout_height="Wrap_content"    Android: background="#000000"    Android:p adding="8DP"    Android: gravity="Center"><com.felipecsl.gifimageview.library.gifimageview        Android: id="@+id/gf_image"        Android: Layout_width="Match_parent"        Android: layout_height="Wrap_content"        Android: src="@mipmap/gif_nv2"        /></LinearLayout>
Dynamic graphs:
Gif_nv2.gif
And then start writing. Drop-down component. Since in order to extend a variety of pull-down, we write a base class that supports multiple scenarios.
/*** with GIF under Laki class */Public abstract classbasegifrefresh<VextendsView>extendslinearlayout{/*** Content Section     */    PrivateVChilderview;protected AbstractVGetconvertview(Context context); PublicBasegifrefresh (Context Context, AttributeSet attrs) {Super(Context, ATTRS);        Init (context);    }/*** Refresh time, show the head     */    PrivateViewHeanderview;    /*** Initialize UI     * @paramContext     */    private voidInit(Context context) {//Set Vertical layout        SetOrientation (LinearLayout.VERTICAL);        //Add head        Heanderview= Newheaderview (context);        AddView (Heanderview);        //Add Content section        Childerview= Newchildview (context);        AddView (Childerview);    }/*** Construct a head header     * @paramContext     * @return     */    PrivateViewNewheaderview(Context context) {View Heanderview = Layoutinflater. from(context). Inflate (r.layout.Refresh_list_header, NULL);        Linearlayout.layoutparams Headerviewparams =NewLinearlayout.layoutparams (Layoutparams.match_parent,  Layoutparams.wrap_content);        Heanderview.setlayoutparams (Headerviewparams);returnHeanderview;    }/*** Component Content Section     * @paramContext     * @return     */    PrivateVNewchildview(Context context) {Linearlayout.layoutparams Convertviewparams =NewLinearlayout.layoutparams (Layoutparams.match_parent,  Layoutparams.match_parent);        Convertviewparams.Weight=1;        VChildview = Getconvertview (context);        Childview.setbackgroundcolor (Color.RED);//TODO to see the effect, test it, occupy the red part of the content        Childview.setlayoutparams (Convertviewparams);returnChildview;    }}
Then write a dropdown for the support list. such as the linear list, we use Recyclerview to do the example
/*** The ListView that drives the drawing head */Public classGifrefreshlistviewextendsbasegifrefresh<recyclerview>{@Override    protectedRecyclerviewGetconvertview(Context context) {Recyclerview Recyclerview =NewRecyclerview (context);        Linearlayoutmanager Linearlayoutmanager =NewLinearlayoutmanager (context);        Linearlayoutmanager.setorientation (Linearlayoutmanager.VERTICAL);        Recyclerview.setlayoutmanager (Linearlayoutmanager);returnRecyclerview;    } PublicGifrefreshlistview (Context Context, AttributeSet attrs) {Super(Context, ATTRS);    }}
Write a Mainactivity.java
    @OverrideonCreate (Bundle savedinstancestate) {super.             OnCreate (savedinstancestate);          Setcontentview (r.layout.  Activity_main);    
Activity_main.xml
<relativelayoutxmlns:Android="Http://schemas.android.com/apk/res/android"     Android: Layout_width="Match_parent"    Android: layout_height="Match_parent"    ><sam.widget.gifrefreshlistview        Android: id="@+id/listview"        Android: Layout_width="Match_parent"        Android: layout_height="Match_parent"/></RelativeLayout>
For
This GIF has not yet been used by the playback API, so it is static
 
Copyright NOTICE: This article for Bo Master original article, without Bo Master permission not reproduced.
 
Step-by-step implementation of GIF animation dropdown (one)