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


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

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

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

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • inputstreamreader读取文件_更新数据的方式有三种

    inputstreamreader读取文件_更新数据的方式有三种/*InputStreamReader读数据的2种方式publicintread():一次读取一个字符publicintread(char[]cbuf):一次读取一个字符数组*/publicclassReaderDemo{ publicstaticvoidmain(String[]args)throwsIOException{ //创建字符输入流 …

  • Java对象序列化详解

    Java对象序列化详解所有分布式应用常常需要跨平台,跨网络,因此要求所有传的参数、返回值都必须实现序列化。一、定义  序列化:把Java对象转换为字节序列的过程。    反序列化:把字节序列恢复为Java对象的过程。二、用途  对象的序列化主要有两种用途:    1)把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中;(持久化对象)    2)在网络上传送对象的字节序列。(网络传输对象)…

  • Offer是否具有法律效力?

    Offer是否具有法律效力?

    2021年11月29日
  • XFF漏洞利用[通俗易懂]

    XFF漏洞利用[通俗易懂]作者:小刚一位苦于信息安全的萌新小白帽,记得关注给个赞,谢谢本实验仅用于信息防御教学,切勿用于其它用途XFF漏洞X-Forwarded-For(XFF)利用方式1.绕过服务器过滤2.XFF导致sql注入补充X-Forwarded-For(XFF)XFF是header请求头中的一个参数是用来识别通过HTTP代理或负载均衡方式连接到Web服务器的客户端最原始的IP地址的HTTP请求头字段。代表了HTTP的请求端真实的IP。X-Forwarded-For:client1,proxy1,p.

  • 单臂路由实现VLAN间通信

    单臂路由实现VLAN间通信使用原因以太网中使用VLAN技术隔离二层广播域,其导致不同VLAN之间不能直接通信。在现实中,通常会有跨VLAN通信的情况,单臂路由技术就是解决VLAN间通信的一种方法。单臂路由原理单臂路由的原理是通过一台路由器,使VLAN间通过路由器的三层转发能够互通数据,在路由器的一个物理接口通过配置子接口(即逻辑接口)的方式来实现以一当多的功能、路由器同一物理接口的不同子接口作为不同VLAN的默认网关…

  • java反转数组_Java中如何将数组反转?Java数组反转的2种方法(代码示例)「建议收藏」

    java反转数组_Java中如何将数组反转?Java数组反转的2种方法(代码示例)「建议收藏」数组操作Java数组如何反转输出?下面本篇文章就给大家介绍2种在java中实现数组反转的简单方法。有一定的参考价值,希望对大家有所帮助。【视频教程推荐:java教程】方法一:使用循环,交换数组中元素的位置使用循环,在原数组中交换元素的位置:第一个元素与最后一个元素交换,第二个元素与最后一个元素交换,依此类推,直到结束。例如,在数组[1,2,3,…,n-2,n-1,n]中,我们可以将1和n进行交…

发表回复

您的电子邮箱地址不会被公开。

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