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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • javaweb教务管理系统源码_java做一个学生管理系统

    javaweb教务管理系统源码_java做一个学生管理系统刚学完javaweb,做个项目练手与巩固所学的知识,同时分享自己写的这个教务管理系统,同样也是为自己记下笔记。为以后复习有帮助。该系统没有用到框架的知识,一共花了7天写出来。所以非常适合javaweb初学者教务管理系统javaweb项目运行环境:window系统,ApacheTomcatv7.0.84、JDK1.8开发环境:J2EEeclipse、navicatformysql运用的技术…

    2022年10月16日
    4
  • 图解Kafka中的数据采集和统计机制 | 文末送30本书任你选[通俗易懂]

    图解Kafka中的数据采集和统计机制 | 文末送30本书任你选[通俗易懂]在讲解kafka限流机制之前,我想先讲解一下Kafka中的数据采集和统计机制你会不会好奇,kafka监控中,那些数据都是怎么计算出来的比如下图这些指标这些数据都是通过Jmx获取的kafka监控指标,那么我们今天老探讨一下,这些指标都是怎么被计算出来的在开始分析之前,我们可以自己思考一下如果让你统计前一分钟内的流速,你会怎么统计才能够让数字更加精确呢?我相信你脑海中肯定出现了一个词:滑动窗口在kafka的数据采样和统计中,也是用了这个方法,通过多个样本Sample进行采样,并合并统计当然

    2022年5月12日
    38
  • Python 之 pip安装 及 使用详解

    Python 之 pip安装 及 使用详解pip是啥  其实,pip就是Python标准库(ThePythonStandardLibrary)中的一个包,这个包比较特殊,用它可以来管理Python标准库(ThePythonStandardLibrary)中其他的包。pip支持从PyPI(https://pypi.org/),版本控制,本地项目以及直接从分发文件进行安装。pip是一个命令行程序。安装pip后,会向系统添加一…

    2022年6月11日
    90
  • vim报错解决方法小结

    vim报错解决方法小结

    2021年7月1日
    159
  • 怎么完全卸载赛门铁克_赛门铁克专用卸载工具[通俗易懂]

    怎么完全卸载赛门铁克_赛门铁克专用卸载工具[通俗易懂]安装卸载是两个操作,完全相反,通常安装会比卸载简单,赛门铁克专用卸载工具是一款专门用于卸载赛门铁克系列软件的应用工具,赛门铁克专用卸载工具完美解决赛门铁克怎么卸载的难题,需要的用户可以下载!赛门铁克官方卸载工具相关说明:包括SymantecAntiVirus即SAV系列,SymantecClientSecurity即SCS系列,以及SymantecEndpointProtection即S…

    2022年4月29日
    133
  • nginx重启命令windows(nginx前台启动命令)

    nginx-sreload:修改配置后重新加载生效nginx-sreopen:重新打开日志文件nginx-t-c/path/to/nginx.conf测试nginx配置文件是否正确关闭nginx:nginx-sstop:快速停止nginxquit:完整有序的停止nginx其他的停止nginx方式:ps-ef|grepn…

    2022年4月13日
    483

发表回复

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

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