码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2016-05-10 12:55:53      阅读:316      评论:0      收藏:0      [点我收藏+]

标签:

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

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

控件部分收缩

技术分享

控件全部收缩

技术分享

How to use?

主build文件

allprojects {
    repositories {

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

包build文件

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

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

技术分享

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

<net.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">

    <TextView
        android:id="@+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" />

    <TextView
        android:layout_width="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" />

    <TextView
        android:layout_width="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" />

</net.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
原作者:

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

标签:

原文地址:http://blog.csdn.net/ddwhan0123/article/details/51361392

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!