翻翻git之---可以收缩伸展的自定义LinearLayout ExpandableLinearLayout

转载请注明出处:王亟亟的大牛之路

今天无意中看到个十分好用,而且效果类似于之前写过的QQ没网络的那种呈现方式,这边分享给大家,先贴下效果

控件部分收缩

控件全部收缩

How to use?

主build文件

allprojects {
    repositories {

        maven { url "https://jitpack.io" }
    }
}

包build文件

dependencies {
    compile 'com.github.cachapa:expandablelayout:1.1'
}

EC:自行Copy很简单就一个类一个XML 很容易植入

翻翻git之---可以收缩伸展的自定义LinearLayout ExpandableLinearLayout_第1张图片

因为是一个试图组,例子中作为根节点的布局来操作,我们使用时看你的需要吧,像这样

.cachapa.expandablelayout.ExpandableLinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:id="@+id/expandable_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    app:el_duration="1000"
    app:el_expanded="true">

    "@+id/expand_button"
        style="@style/TextAppearance.AppCompat.Medium"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:background="?android:windowBackground"
        android:elevation="6dp"
        android:foreground="?selectableItemBackground"
        android:gravity="center"
        android:padding="16dp"
        android:text="Click here to toggle expansion" />

    "match_parent"
        android:layout_height="50dp"
        android:background="#00b300"
        android:clipToPadding="false"
        android:elevation="4dp"
        android:gravity="center"
        android:text="Fixed height"
        android:textColor="#fff"
        app:layout_expandable="true" />

    "match_parent"
        android:layout_height="match_parent"
        android:layout_weight="1"
        android:background="#00f"
        android:gravity="center"
        android:text="Fill height"
        android:textColor="#fff"
        app:layout_expandable="false" />

.cachapa.expandablelayout.ExpandableLinearLayout>

因为继承LinearLayout ,所以水平还是垂直看你的需要,其他就没区别了
然后哪个节点需要伸缩,设置下

 app:layout_expandable="true"

就行true就是支持,false就是不支持,很简单。

还有2个自定义标签,这里也说下

 app:el_duration="1000"
 app:el_expanded="true"

一个用于动画设置时间,一个设置可见不可见。

app:el_duration默认 300

app:el_expanded默认 false

大致讲下如何实现,试图组计算位置摆放等操作和普通LinearLayout没什么区别,动画使用ValueAnimator动画来处理的默认动画结束后做 view.setVisibility(GONE) 或者view.setVisibility(View.VISIBLE)操作。

那如何设置动态设置显示or隐藏效果呢?
调用

 expandableLayout.toggle();

它会自动判断当前的状态然后走 相应逻辑,使用非常的简单

该项目已收入 :https://github.com/ddwhan0123/Useful-Open-Source-Android
源码地址:https://github.com/cachapa/ExpandableLayout/archive/master.zip
原作者:

你可能感兴趣的:(Android第三方库,翻翻Git找资源)