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)
上一篇 2022年1月10日 下午1:00
下一篇 2022年1月10日 下午1:00


相关推荐

  • 美股实时行情api接口(美股开户)

    所有美股历史交易行情数据,完整历史交易/任意时间段查询。1.产品功能支持所有历史美股交易查询;支持指定任意时间段查询;超高的查询效率,秒级返回;所有的交易数据为未复权的数据;全接口支持HTTPS(TLSv1.0/v1.1/v1.2/v1.3);全面兼容AppleATS;全国多节点CDN部署;接口极速响应,多台服务器构建API接口负载均衡。2.API文档接口地址:https://api.gugudata.com/stock/us返回格式:

    2022年4月11日
    137
  • 4个基本不等式的公式高中_高中4个基本不等式的公式

    4个基本不等式的公式高中_高中4个基本不等式的公式高中4基本不等式:√[(a2+b2)/2]≥(a+b)/2≥√ab≥2/(1/a+1/b)。平方平均值≥算术平均数≥几何平均数≥调和平均数。基本不等式的两个技巧“1”使用。如果标题中有两个公式,则它们之和为常数,要求这两个公式的倒数之和的最小值,常用所把这个公式乘以1,然后把1让我们使用上一个常量,可以通过扩展这两个公式来计算。如果你知道两个公式的倒数之和是常数,求两个公式之和的最小值,方法同上。…

    2022年4月27日
    108
  • java 并发数_并发数和TPS的理解

    java 并发数_并发数和TPS的理解并发数可以理解为 单位时间内同时在线的人数 而这个数值是可以一直增大的 但是 TPS 就不一样了 TPS 受限于机器的硬件资源 最常见的就是 CPUload 当并发数在增大 CPUload 也会上升 一般当 load 到达 1 时 满载 也代表着 TPS 到达一个顶峰 如果并发数继续增大 那么 TPS 的曲线会下降 所以 如果用图来描述上述过程的话 并发数是一条直线 TPS 是一条抛物线 当 load 未满载时呈现上升 满载

    2026年3月17日
    2
  • iconfont使用简易教程

    iconfont使用简易教程因为自己的项目中需要使用图标 而本人不擅长前端 因此了解到阿里的 iconfont 矢量图标是一个不错的图标库 下文介绍最简易 通用的使用图标方式以便参考 1 nbsp 寻找适用的图标官方网址 http www iconfont cn 找到需要的 icon 以为例 添加入库 1 nbsp 生成代码 点击右上角购物车图标点击下载代码 得到 zip 包 解压即可获得需要的文件

    2026年3月26日
    1
  • shell 格式化json(python json.loads)

    LINUXSHELL解析JSON格式1.使用工具jqhttps://stedolan.github.io/jq/下载版本linux版本jq-linux64Ubuntu直接sudoapt-getinstalljq即可。2.解析json[root@casscript]#cattest.json{“tasks”:[{“id”:”simpletour-wechat.a17506e7

    2022年4月17日
    77
  • win10重置网络命令_WIN10重置网络的操作方法

    win10重置网络命令_WIN10重置网络的操作方法近日有一些小伙伴咨询小编关于 WIN10 怎样重置网络呢 下面就为大家带来了 WIN10 重置网络的具体方法 有需要的小伙伴可以来了解了解哦 WIN10 重置网络的操作方法操作方法一 通过设置重置网络除可以通过命令重置网络 也可以在 Win10 设置中进行网络设置 具体操作如下 从 Win10 左下角的开始菜单中 点击打开 设置 然后进入 网络和 internet 设置 在网络设置界面的 右侧 状态 界面下拉

    2025年10月21日
    6

发表回复

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

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