Android仿微信顶部小程序下拉列表

本文介绍如何仿照微信顶部小程序的下拉列表功能。通过分析两种方法,最终采用监听手势的dispatchTouchEvent方法实现。在用户下拉过程中,小圆点出现并分散,达到一定距离后震动显示菜单栏,小圆点消失。关键在于根据滑动距离动态调整控件高度和位移动画的应用。
摘要由CSDN通过智能技术生成

前不久有一朋友问我如何仿照微信顶部小程序下拉列表,我大致描述了一下流程,最后大手一挥,说网上应该多得是,给糊弄了。后来自己上网搜索了一下,只找到一篇(点击打开链接),感到心中有愧,故又写了一个demo,给别人一些思路吧。

国际惯例,先上图:

写之前我考虑了两种方法,第一种,依附于ScrollView、ListView等带有滑动的控件,判断是否滚动到顶部,然后在控件的滚动监听事件中做处理,但这种方法由于种种限制被我否决了(小伙伴们可以看看这种方法到底可不可行...);第二种,就是用dispatchTouchEvent方法,监听手势,个人觉得这个很靠谱,哈哈哈。

主要的思路如下:

1.开始下拉,三个小圆点出现,并分散

2.下拉到一定距离,震动,出现菜单栏,并且小圆点消失

一句话概括,主要是根据手指滑动距离动态改变控件高度,再配合位移动画达到效果

还是看代码吧,最直观

java代码:

public class MainActivity extends AppCompatActivity {
    ScrollView scrollView;
    RelativeLayout rel_top, rel_dot, rel_menu;
    View dot_1, dot_2, dot_3;
    float scale;
    float firstY, lastY;
    int height;
    boolean isPullDown = false;//是否是向下滑动 true 是
    boolean isAnimation = false;//动画是否已开启过 true 是
    final int HEIGHT=180;//菜单布局正常高度
    final int HEIGHT_DOT=120;//三个小球布局正常高度

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        scale = this.getResources().getDisplayMetrics().density;
        scrollView = findViewById(R.id.scrollView);
        rel_top = findViewById(R.id.rel_top);
        rel_menu = findViewById(R.id.rel_menu);
        rel_dot = findViewById(R.id.rel_dot);
        dot_1 = findViewById(R.id.dot_1);
        dot_2 = findViewById(R.id.dot_2);
        dot_3 = findViewById(R.id.dot_3);
    }


    @Override
    public boolean dispatchTouchEvent(MotionEvent event) {
        switch (event.getAction()) {
            case MotionEvent.ACTION_DOWN:
                firstY = even
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值