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

前不久有一朋友问我如何仿照微信顶部小程序下拉列表,我大致描述了一下流程,最后大手一挥,说网上应该多得是,给糊弄了。后来自己上网搜索了一下,只找到一篇(点击打开链接),感到心中有愧,故又写了一个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
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值