AndroidSlidingUpPanel 使用控制和简单的分析方法

AndroidSlidingUpPanel 使用控制和简单的分析方法

大家好,又见面了,我是全栈君,今天给大家准备了Idea注册码。

滑 – 向上的时间可以飞起来控件的显示区域。分类似至play music有效。

AndroidSlidingUpPanel 使用控制和简单的分析方法

该控件在主界面中有一个例如以下图红色箭头所指的底部触发区域

AndroidSlidingUpPanel 使用控制和简单的分析方法

该区域点击的时候被隐藏在下方的内容将网上漂移到顶部,直到被隐藏的内容全然挡住原来的布局。可是这个触发区域仍然存在,如图。

AndroidSlidingUpPanel 使用控制和简单的分析方法

当被隐藏区域全然显示。这时再次点击触发区域(或者是通过下滑的手势)将恢复到最初的状态。

一般再未点击的时候。这个触发区域显示一些被隐藏内容的简要信息。

这就是AndroidSlidingUpPanel的效果了。

AndroidSlidingUpPanel的实现是使用ViewdragHelper实现的。事实上ViewdragHelper在surport v4中已经能够直接使用了。可是作者直接将ViewdragHelper的全部源代码放到了自己的项目中。

以下是AndroidSlidingUpPanel库的代码结构:

AndroidSlidingUpPanel 使用控制和简单的分析方法

当中SlidingUpPanelLayout是一个继承自ViewGroup的类。

用法:

.将com.sothree.slidinguppanel.SlidingUpPanelLayout作为根节点放到你activity的layout文件里。

.layout必须设置gravity属性为top 或者bottom

.确保SlidingUpPanelLayout有两个子view,一个是主界面。另外一个是向上滑动的界面。

.SlidingUpPanelLayout的width须要设置成match_parent,height能够是match_parent或者是固定值。

.默认情况下。整个界面都能够对应滑动和点击事件。你能够通过调用setDragView来约束可滑动的View范围。

很多其它的使用请參考demo。

<com.sothree.slidinguppanel.SlidingUpPanelLayout
    xmlns:sothree="http://schemas.android.com/apk/res-auto"
    android:id="@+id/sliding_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:gravity="bottom"
    sothree:panelHeight="68dp"
    sothree:shadowHeight="4dp">
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center"
        android:text="Main Content"
        android:textSize="16sp" />
    <TextView
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:gravity="center|top"
        android:text="The Awesome Sliding Up Panel"
        android:textSize="16sp" />
</com.sothree.slidinguppanel.SlidingUpPanelLayout>

项目给出的demo中当向上滑动的时候actionbar也是跟着慢慢隐藏的。这样的效果必须使用
ActionBarOverlay模式:

<style name="AppTheme">
    <item name="android:windowActionBarOverlay">true</item>
</style>

同一时候这样的情况你须要为主区域的布局设置margintop为actionbar的高度:

?

android:attr/actionBarSize

还须要在代码中动态的改变actionbar:

public void setActionBarTranslation(float y) {
    // Figure out the actionbar height
    int actionBarHeight = getActionBarHeight();
    // A hack to add the translation to the action bar
    ViewGroup content = ((ViewGroup) findViewById(android.R.id.content).getParent());
    int children = content.getChildCount();
    for (int i = 0; i < children; i++) {
        View child = content.getChildAt(i);
        if (child.getId() != android.R.id.content) {
            if (y <= -actionBarHeight) {
                child.setVisibility(View.GONE);
            } else {
                child.setVisibility(View.VISIBLE);
                if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {
                    child.setTranslationY(y);
                } else {
                    AnimatorProxy.wrap(child).setTranslationY(y);
                }
            }
        }
    }
}

最后要说的是,AndroidSlidingUpPanel在某些方面有点类似与垂直的ViewPager。可是不同点也非常多。假设你想用ViewPager来实现AndroidSlidingUpPanel的效果是非常不明智的。

项目地址:

https://github.com/umano/AndroidSlidingUpPanel


版权声明:本文博主原创文章,博客,未经同意,不得转载。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/117127.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • 静态IP地址版EVE模拟器部署和使用说明

    静态IP地址版EVE模拟器部署和使用说明很多小伙伴由于还是初学者,对DHCP等协议并不熟悉,因此在使用模拟器的时候出现各种不理解的问题。为了让大家顺利的开始学习之路,特分享一个静态IP地址版本的供大家选择。前面的部署步骤请参考我的另一篇博客:https://blog.51cto.com/dashu666/2177842虚拟机导入完成之后,在开机之前,需要做如下操作:1、将虚拟机桥接到一个虚拟网络中,如下图:这里的…

    2022年5月1日
    260
  • 中华人民共和国国家标准电子计算机机房设计规范_计算机机房建设标准规范

    中华人民共和国国家标准电子计算机机房设计规范_计算机机房建设标准规范第一章总则第1.0.1条为了使电子计算机机房设计确保电子计算机系统稳定可靠运行及保障机房工作人员有良好的工作环境,做到技术先进、经济合理、安全适用、确保质量,制定本规范。第1.0.2条本规范适用于陆地上新建、改建和扩建的主机房建筑面积大于或等于140平方m的电子计算机机房的设计。本规范不适用于工业控制用计算机机房和微型计算机机房。第1.0.3条电子计…

    2022年10月2日
    2
  • 啥是SBC_sbc是什么意思的缩写

    啥是SBC_sbc是什么意思的缩写SBC简介SBC应用SBC功能★SBC简介会话边界控制器SessionBorderController,即会话边界控制器SBC已经逐渐成为NGN和IMS网络的标准配置产品(如同Lanswitch和路由器)。也被广泛称为BAC(边界接入控制器),定位在IMS网络的ABG(accessbordergateway),解决NGN业务部署中遇到的NAT/FW穿越

    2025年10月31日
    3
  • 什么是SSL协议,SSL协议是什么意思?「建议收藏」

    什么是SSL协议,SSL协议是什么意思?「建议收藏」转载自品略图书馆http://www.pinlue.com/article/2020/03/2322/5910049346926.html什么是SSL协议?SSL协议是一种安全传输协议,SSL是SecureSocketLayer的缩写,即安全套接层协议。该协议最初由Netscape企业发展而来,目前已经成为互联网上用来鉴别网站和网页浏览者的身份,以及在浏览器使用者及网页服务器之间…

    2022年5月7日
    53
  • 配置缺省路由_缺省路由下一跳

    配置缺省路由_缺省路由下一跳缺省路由(默认路由),易目的网络为0.0.0.0,子网掩码为0.0.0.0的形式出现。应用缺省路由可减少路由表的规模,减少维护压力。如下图对于交换机A而言,要去往交换机B所直连的PC1\PC2,就需要有路由的指引。如果我们配置静态路由的话,就需要在交换机A上配置两条静态路由。即增加了配置工作量,又增加了交换机A的负担。因为交换机需要维护更多的路由条目,而承载路由条目的路由表需要占用设备内存资源。为优化网络设计,在保证路由可达的情况下,可以尽量减少路由表的路由条目。在下图场景下,我们可以配置一条缺省路由

    2025年7月13日
    5
  • C/C++中static变量和static函数的用法

    C/C++中static变量和static函数的用法静态成员数据和静态成员函数1.C中静态数据和静态函数的用法C语言中定义一个静态变量和静态函数主要是为了满足某个文件的需求比如我们在文件List.c中定义staticintcount=0;//静态变量staticintget_last_node(List*Head)

    2022年7月16日
    127

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号