精华内容
下载资源
问答
  • Android返回顶部实现

    千次阅读 2017-02-17 09:36:50
    点击按钮返回顶部

    点击按钮返回顶部,直接上代码吧

    布局文件

    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="#ffffff"
        android:orientation="vertical">
    
        <ScrollView
            android:id="@+id/sv_home"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:fillViewport="true">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:orientation="vertical">
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" 
                    android:background="@mipmap/eason"/>
    
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" 
                    android:background="@mipmap/eason"/>
    
                <ImageView
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content" 
                    android:background="@mipmap/eason"/>
                                           <android.support.design.widget.FloatingActionButton
                    android:id="@+id/fab_top"
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_gravity="right|bottom"
                    android:layout_marginRight="10dp"
                    android:src="@mipmap/top"
                    app:backgroundTint="#ecefef"
                    app:elevation="10dp"
                    app:pressedTranslationZ="12dp"
                    app:rippleColor="@color/colorPrimary" />
            </LinearLayout>
        </ScrollView>
    </LinearLayout>

    按钮点击事件

    topBtn.setOnClickListener(new OnClickListener() {
    
             @Override
             public void onClick(View v) {
                sc.post(new Runnable() {
    
                   @Override
                   public void run() {
                      sc.post(new Runnable() {
                         public void run() {
                            // 返回顶部
                            sc.fullScroll(ScrollView.FOCUS_UP);
                         }
                      });
                   }
                });
    
             }
          });

    附带一个跳到底部

     bottomBtn.setOnClickListener(new OnClickListener() {
    
             @Override
             public void onClick(View v) {
                sc.post(new Runnable() {
    
                   @Override
                   public void run() {
                      sc.post(new Runnable() {
                         public void run() {
                            // 滚动到底部
                            sc.fullScroll(ScrollView.FOCUS_DOWN);
                         }
                      });
                   }
                });
             }
          });
    展开全文
  • Android中使用FloatingActionButton实现一个点击按钮返回顶部功能发布时间:2020-11-24 15:49:29来源:亿速云阅读:148作者:Leah这期内容当中小编将会给大家带来有关Android中使用FloatingActionButton实现一个点击...

    Android中使用FloatingActionButton实现一个点击按钮返回顶部功能

    发布时间:2020-11-24 15:49:29

    来源:亿速云

    阅读:148

    作者:Leah

    这期内容当中小编将会给大家带来有关Android中使用FloatingActionButton实现一个点击按钮返回顶部功能,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

    FloatingActionButton是Design Support库中提供的一个控件,这个控件可以轻松实现悬浮按钮的效果

    首先,要在项目中使用这个悬浮按钮就要先把design这个包导入项目

    gradle中加入依赖

    compile 'com.android.support:design:25.0.0'

    接下来就是在xml中使用:

    我这里是放置一个listView模拟返回顶部

    android:layout_width="match_parent"

    android:layout_height="match_parent"

    xmlns:app="http://schemas.android.com/apk/res-auto">

    android:id="@+id/listview_main"

    android:layout_width="match_parent"

    android:layout_height="match_parent" />

    android:id="@+id/floating_btn_main"

    android:layout_width="wrap_content"

    android:layout_height="wrap_content"

    android:layout_alignParentRight="true"

    android:layout_alignParentBottom="true"

    android:src="@mipmap/top"

    app:elevation="10dp"

    android:layout_margin="15dp"/>

    其中 app:elevation=”10dp”是给FloatingActionButton指定一个高度,高度越高,投影的范围越大,但是投影效果越淡,反之则反

    接下来是MainActivity中的使用:

    package com.duanlian.floatingbtn;

    import android.support.design.widget.FloatingActionButton;

    import android.support.v7.app.AppCompatActivity;

    import android.os.Bundle;

    import android.view.View;

    import android.webkit.WebView;

    import android.webkit.WebViewClient;

    import android.widget.ListView;

    import java.util.ArrayList;

    import java.util.List;

    public class MainActivity extends AppCompatActivity {

    private ListView mListView;

    private FloatingActionButton mFloatBtn;

    private MyListViewAdapter mAdapter;

    private List mList;

    @Override

    protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);

    setContentView(R.layout.activity_main);

    initView();

    }

    private void initView() {

    mListView = (ListView) findViewById(R.id.listview_main);

    mFloatBtn = (FloatingActionButton) findViewById(R.id.floating_btn_main);

    mList = new ArrayList<>();

    for (int i = 0; i < 30; i++) {

    mList.add(i + "");

    }

    mAdapter = new MyListViewAdapter(this, mList);

    mListView.setAdapter(mAdapter);

    //悬浮按钮的点击事件的监听

    mFloatBtn.setOnClickListener(new View.OnClickListener() {

    @Override

    public void onClick(View view) {

    //listView返回到顶部

    mListView.smoothScrollToPosition(0);

    }

    });

    }

    }

    上述就是小编为大家分享的Android中使用FloatingActionButton实现一个点击按钮返回顶部功能了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注亿速云行业资讯频道。

    展开全文
  • 主要为大家详细介绍了Android返回顶部实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • Android】Listview返回顶部,快速返回顶部的功能实现,详解代码
  • 本篇文章主要介绍了android中LinearLayoutManager一键返回顶部,具有一定的参考价值,感兴趣的小伙伴们可以参考一下。
  • 主要为大家详细介绍了Android悬浮按钮FloatingActionButton点击回到顶部的实现代码,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
  • 首先给大家看一下我们今天这个最终实现的效果...我这里只是单纯的实现了scrollview返回顶部的功能。具体效果大家可以适当地美化 在实际项目中可以换图标,去掉右侧滚动条等。具体ui美化不做解释。 好了,首先我们是当

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193
    新浪微博:http://weibo.com/mcxiaobing
    首先给大家看一下我们今天这个最终实现的效果图:
    这里写图片描述
    我这里只是单纯的实现了scrollview返回顶部的功能。具体效果大家可以适当地美化
    在实际项目中可以换图标,去掉右侧滚动条等。具体ui美化不做解释。
    好了,首先我们是当不在顶部的时候,返回顶部按钮就会出现,而到顶部之后就会隐藏此按钮,所以我们这里就要算scrollview的滑动偏移量,当然,有这个返回顶部按钮,而且一直显示在底部,所以当然用相对布局了。下面先给大家看一下xml布局源码:

    <?xml version="1.0" encoding="utf-8"?>
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    
        <ScrollView
            android:id="@+id/my_scrollView"
            android:layout_width="match_parent"
            android:layout_height="match_parent">
    
            <LinearLayout
                android:layout_width="match_parent"
                android:layout_height="match_parent"
                android:gravity="center"
                android:orientation="vertical">
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:text="Hello 程序员小冰"
                    android:textSize="20dp" />
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:text="Android Dev Team"
                    android:textSize="20dp" />
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:text="http://weibo.com/mcxiaobing"
                    android:textSize="20dp" />
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:text="qq986945193"
                    android:textSize="20dp" />
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:text="Hello IOS" />
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:text="java开发者"
                    android:textSize="20dp" />
    
                <TextView
                    android:layout_width="match_parent"
                    android:layout_height="200dp"
                    android:text="Android开发者"
                    android:textSize="20dp" />
            </LinearLayout>
        </ScrollView>
    
        <Button
            android:id="@+id/top_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="6dp"
            android:layout_marginRight="6dp"
            android:background="@mipmap/top_btn_bg"
            android:gravity="center"
            android:text="顶"
            android:visibility="gone" />
    </RelativeLayout>
    

    好了,然后就是我们的java实现代码了。下面是源代码,不懂得朋友可以留言,或者更好的建议,相互交流。对了,特别说一下,scrollview在XML布局中只能有一个子view,不然就会报错。所以这一点我在java代码中也特意说明了一下。java实现代码如下:

    package davidtotopscrollview.qq986945193.davidtotopscrollview;
    
    import android.os.Handler;
    import android.os.Message;
    import android.support.v7.app.AppCompatActivity;
    import android.os.Bundle;
    import android.util.Log;
    import android.view.MotionEvent;
    import android.view.View;
    import android.widget.Button;
    import android.widget.ScrollView;
    
    /**
     * @author :程序员小冰
     * @新浪微博 :http://weibo.com/mcxiaobing
     * @GitHub: https://github.com/QQ986945193
     * @CSDN博客: http://blog.csdn.net/qq_21376985
     * @码云OsChina :http://git.oschina.net/MCXIAOBING
     */
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
        private ScrollView scrollView;// scrollView数据列表
        private Button toTopBtn;// 返回顶部的按钮
    
    
        private int scrollY = 0;// 标记上次滑动位置
    
        private View contentView;
    
        private final String TAG = "qq986945193";
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            initView();
        }
    
        /**
         * 初始化视图
         */
        private void initView() {
            scrollView = (ScrollView) findViewById(R.id.my_scrollView);
            if (contentView == null) {
                contentView = scrollView.getChildAt(0);
            }
    
            toTopBtn = (Button) findViewById(R.id.top_btn);
            toTopBtn.setOnClickListener(this);
    
            //http://blog.csdn.net/qq_21376985
            /******************** 监听ScrollView滑动停止 *****************************/
            scrollView.setOnTouchListener(new View.OnTouchListener() {
                private int lastY = 0;
                private int touchEventId = -9983761;
                Handler handler = new Handler() {
                    @Override
                    public void handleMessage(Message msg) {
                        super.handleMessage(msg);
                        View scroller = (View) msg.obj;
                        if (msg.what == touchEventId) {
                            if (lastY == scroller.getScrollY()) {
                                handleStop(scroller);
                            } else {
                                handler.sendMessageDelayed(handler.obtainMessage(
                                        touchEventId, scroller), 5);
                                lastY = scroller.getScrollY();
                            }
                        }
                    }
                };
    
                public boolean onTouch(View v, MotionEvent event) {
                    if (event.getAction() == MotionEvent.ACTION_UP) {
                        handler.sendMessageDelayed(
                                handler.obtainMessage(touchEventId, v), 5);
                    }
                    return false;
                }
    
                /**
                 * ScrollView 停止
                 *
                 * @param view
                 */
                private void handleStop(Object view) {
    
                    Log.i(TAG, "handleStop");
                    ScrollView scroller = (ScrollView) view;
                    scrollY = scroller.getScrollY();
    
                    doOnBorderListener();
                }
            });
            /***********************************************************/
    
        }
    
        /**
         * ScrollView 的顶部,底部判断:
         * http://blog.csdn.net/qq_21376985
         * <p/>
         * 其中getChildAt表示得到ScrollView的child View, 因为ScrollView只允许一个child
         * view,所以contentView.getMeasuredHeight()表示得到子View的高度,
         * getScrollY()表示得到y轴的滚动距离,getHeight()为scrollView的高度。
         * 当getScrollY()达到最大时加上scrollView的高度就的就等于它内容的高度了啊~
         *
         * @param
         */
        private void doOnBorderListener() {
            // 底部判断
            if (contentView != null
                    && contentView.getMeasuredHeight() <= scrollView.getScrollY()
                    + scrollView.getHeight()) {
                toTopBtn.setVisibility(View.VISIBLE);
                Log.i(TAG, "bottom");
            }
            // 顶部判断
            else if (scrollView.getScrollY() == 0) {
    
                Log.i(TAG, "top");
            } else if (scrollView.getScrollY() > 30) {
                toTopBtn.setVisibility(View.VISIBLE);
                Log.i(TAG, "test");
            }
    
        }
    
        /**
         * 下面我们看一下这个函数: scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部
         * scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部
         * <p/>
         * <p/>
         * 需要注意的是,该方法不能直接被调用 因为Android很多函数都是基于消息队列来同步,所以需要一部操作,
         * addView完之后,不等于马上就会显示,而是在队列中等待处理,虽然很快, 但是如果立即调用fullScroll,
         * view可能还没有显示出来,所以会失败 应该通过handler在新线程中更新
         * <p/>
         * http://blog.csdn.net/qq_21376985
         * http://weibo.com/mcxiaobing
         */
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
                case R.id.top_btn:
                    scrollView.post(new Runnable() {
                        @Override
                        public void run() {
    //                        scrollView.fullScroll(ScrollView.FOCUS_DOWN);滚动到底部
    //                        scrollView.fullScroll(ScrollView.FOCUS_UP);滚动到顶部
    //
    //                        需要注意的是,该方法不能直接被调用
    //                        因为Android很多函数都是基于消息队列来同步,所以需要一部操作,
    //                        addView完之后,不等于马上就会显示,而是在队列中等待处理,虽然很快,但是如果立即调用fullScroll, view可能还没有显示出来,所以会失败
    //                                应该通过handler在新线程中更新
                            scrollView.fullScroll(ScrollView.FOCUS_UP);
                        }
                    });
                    toTopBtn.setVisibility(View.GONE);
                    break;
            }
        }
    
    }
    

    好了,教程到此结束。如果此文章帮到了你,欢迎点赞。
    源代码需要的可以去
    (AndroidStudio版)github下载地址:
    https://github.com/QQ986945193/DavidToTopScrollView

    展开全文
  • 首先给大家看一下我们今天这个最终实现的效果图...我这里只是单纯的实现了ListView返回顶部的功能。具体效果大家可以适当地美化 在实际项目中可以换图标,去掉右侧滚动条等。具体ui美化不做解释。 好了,首先我们是当

    作者:程序员小冰,GitHub主页:https://github.com/QQ986945193
    新浪微博:http://weibo.com/mcxiaobing
    首先给大家看一下我们今天这个最终实现的效果图:
    这里写图片描述
    我这里只是单纯的实现了ListView返回顶部的功能。具体效果大家可以适当地美化
    在实际项目中可以换图标,去掉右侧滚动条等。具体ui美化不做解释。
    好了,首先我们是当不在顶部的时候,返回顶部按钮就会出现,而到顶部之后就会隐藏此按钮,所以我们这里就要算Listview的滑动偏移量,当然,有这个返回顶部按钮,而且一直显示在底部,所以当然用相对布局了。先给大家看一下xml布局源码比较简单:

    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@android:color/white" >
    
        <ListView
            android:id="@+id/my_listView"
            android:layout_width="fill_parent"
            android:layout_height="wrap_content"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp" />
    
        <Button
            android:id="@+id/top_btn"
            android:layout_width="50dp"
            android:layout_height="50dp"
            android:visibility="gone"
            android:layout_alignParentBottom="true"
            android:layout_alignParentRight="true"
            android:layout_marginBottom="6dp"
            android:layout_marginRight="6dp"
            android:background="@mipmap/top_btn_bg"
            android:gravity="center"
            android:text="顶" />
    
    </RelativeLayout>

    然后我们需要一个获取屏幕的一个工具类,这里我封装好了,:

    package davidtotoplistview.qq986945193.davidtotoplistview.davidtotoplistview;
    
    import android.content.Context;
    import android.view.Display;
    import android.view.View;
    import android.view.WindowManager;
    
    /**
     * @author :程序员小冰
     * @新浪微博 :http://weibo.com/mcxiaobing
     * @GitHub: https://github.com/QQ986945193
     * @CSDN博客: http://blog.csdn.net/qq_21376985
     * @码云OsChina :http://git.oschina.net/MCXIAOBING
     */
    public class ScreenUtil {
    
        /**
         * 获取屏幕的宽度
         * 
         * @param context
         * @return
         */
        public static int getScreenWidth(Context context) {
            WindowManager manager = (WindowManager) context
                    .getSystemService(Context.WINDOW_SERVICE);
            Display display = manager.getDefaultDisplay();
    
            return display.getWidth();
        }
    
        /**
         * 获取屏幕的高度
         * 
         * @param context
         * @return
         */
        public static int getScreenHeight(Context context) {
            WindowManager manager = (WindowManager) context
                    .getSystemService(Context.WINDOW_SERVICE);
            Display display = manager.getDefaultDisplay();
            return display.getHeight();
        }
    
        /**
         * 获取屏幕中控件顶部位置的高度--即控件顶部的Y点
         * 
         * @return
         */
        public static int getScreenViewTopHeight(View view) {
            return view.getTop();
        }
    
        /**
         * 获取屏幕中控件底部位置的高度--即控件底部的Y点
         * 
         * @return
         */
        public static int getScreenViewBottomHeight(View view) {
            return view.getBottom();
        }
    
        /**
         * 获取屏幕中控件左侧的位置--即控件左侧的X点
         * 
         * @return
         */
        public static int getScreenViewLeftHeight(View view) {
            return view.getLeft();
        }
    
        /**
         * 获取屏幕中控件右侧的位置--即控件右侧的X点
         * 
         * @return
         */
        public static int getScreenViewRightHeight(View view) {
            return view.getRight();
        }
    
    }

    好了,然后我们需要一个adapter,就是现实列表的一个简单的textview

    package davidtotoplistview.qq986945193.davidtotoplistview.davidtotoplistview;
    
    import java.util.List;
    
    
    import android.content.Context;
    import android.view.LayoutInflater;
    import android.view.View;
    import android.view.ViewGroup;
    import android.widget.BaseAdapter;
    import android.widget.TextView;
    
    /**
     * @author :程序员小冰
     * @新浪微博 :http://weibo.com/mcxiaobing
     * @GitHub: https://github.com/QQ986945193
     * @CSDN博客: http://blog.csdn.net/qq_21376985
     * @码云OsChina :http://git.oschina.net/MCXIAOBING
     *
     * listview所需要的adapter
     */
    public class MyAdapter extends BaseAdapter {
    
        private List<String> mTitleArray;// 标题数组
        private LayoutInflater inflater;
    
        /**
         * 构造方法
         *
         * @param context    // 上下文对象
         * @param titleArray // 标题数组
         */
        public MyAdapter(Context context, List<String> titleArray) {
            this.mTitleArray = titleArray;
            inflater = (LayoutInflater) context
                    .getSystemService(Context.LAYOUT_INFLATER_SERVICE);
        }
    
        /**
         * 获取Item总数
         */
        @Override
        public int getCount() {
            // TODO Auto-generated method stub
            if (mTitleArray != null) {
                return mTitleArray.size();
            } else {
                return 0;
            }
        }
    
        /**
         * 获取一个Item对象
         */
        @Override
        public Object getItem(int position) {
            // TODO Auto-generated method stub
            if (mTitleArray != null) {
                return mTitleArray.get(position);
            } else {
                return null;
            }
        }
    
        /**
         * 获取指定item的ID
         */
        @Override
        public long getItemId(int position) {
            // TODO Auto-generated method stub
            return position;
        }
    
        @Override
        public View getView(int position, View convertView, ViewGroup parent) {
            // TODO Auto-generated method stub
            ViewHolder holder = null;
            if (convertView == null) {
                holder = new ViewHolder();
                convertView = inflater.inflate(R.layout.item_layout, null);
                holder.mTitleTv = (TextView) convertView
                        .findViewById(R.id.title_tv);
                convertView.setTag(holder);
            } else {
                holder = (ViewHolder) convertView.getTag();
            }
    
            holder.mTitleTv.setText(mTitleArray.get(position));
            return convertView;
        }
    
        private class ViewHolder {
            private TextView mTitleTv;
        }
    
    }

    ok,现在基本上工具都做好了,开始实现我们的重要的部分,实现返回顶部:

    package davidtotoplistview.qq986945193.davidtotoplistview.davidtotoplistview;
    
    import android.os.Bundle;
    import android.support.v7.app.AppCompatActivity;
    import android.view.View;
    import android.widget.AbsListView;
    import android.widget.Button;
    import android.widget.ListView;
    
    import java.util.ArrayList;
    import java.util.List;
    
    /**
     * @author :程序员小冰
     * @新浪微博 :http://weibo.com/mcxiaobing
     * @GitHub: https://github.com/QQ986945193
     * @CSDN博客: http://blog.csdn.net/qq_21376985
     * @码云OsChina :http://git.oschina.net/MCXIAOBING
     */
    public class MainActivity extends AppCompatActivity implements View.OnClickListener {
    
        private ListView myListView;
        private Button topBtn;
    
        private MyAdapter adapter;
        private boolean scrollFlag = false;// 标记是否滑动
        private int lastVisibleItemPosition = 0;// 标记上次滑动位置
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            myListView = (ListView) findViewById(R.id.my_listView);
            topBtn = (Button) findViewById(R.id.top_btn);
    
            adapter = new MyAdapter(this, getTitleDatas());
            myListView.setAdapter(adapter);
    
            topBtn.setOnClickListener(this);
            myListView.setOnScrollListener(new AbsListView.OnScrollListener() {
    
                @Override
                public void onScrollStateChanged(AbsListView view, int scrollState) {
                    // TODO Auto-generated method stub
                    switch (scrollState) {
                        // 当不滚动时
                        case AbsListView.OnScrollListener.SCROLL_STATE_IDLE:// 是当屏幕停止滚动时
                            scrollFlag = false;
                            // 判断滚动到底部
                            if (myListView.getLastVisiblePosition() == (myListView
                                    .getCount() - 1)) {
                                topBtn.setVisibility(View.VISIBLE);
                            }
                            // 判断滚动到顶部
                            if (myListView.getFirstVisiblePosition() == 0) {
                                topBtn.setVisibility(View.GONE);
                            }
    
                            break;
                        case AbsListView.OnScrollListener.SCROLL_STATE_TOUCH_SCROLL:// 滚动时
                            scrollFlag = true;
                            break;
                        case AbsListView.OnScrollListener.SCROLL_STATE_FLING:// 是当用户由于之前划动屏幕并抬起手指,屏幕产生惯性滑动时
                            scrollFlag = false;
                            break;
                    }
                }
    
                /**
                 * firstVisibleItem:当前能看见的第一个列表项ID(从0开始)
                 * visibleItemCount:当前能看见的列表项个数(小半个也算) totalItemCount:列表项共数
                 * CSDN博客: http://blog.csdn.net/qq_21376985
                 */
                @Override
                public void onScroll(AbsListView view, int firstVisibleItem,
                                     int visibleItemCount, int totalItemCount) {
                    // 当开始滑动且ListView底部的Y轴点超出屏幕最大范围时,显示或隐藏顶部按钮
                    if (scrollFlag
                            && ScreenUtil.getScreenViewBottomHeight(myListView) >= ScreenUtil
                            .getScreenHeight(MainActivity.this)) {
                        if (firstVisibleItem > lastVisibleItemPosition) {// 上滑
                            topBtn.setVisibility(View.VISIBLE);
                        } else if (firstVisibleItem < lastVisibleItemPosition) {// 下滑
                            topBtn.setVisibility(View.GONE);
                        } else {
                            return;
                        }
                        lastVisibleItemPosition = firstVisibleItem;
                    }
                }
            });
        }
    
        /**
         * 获取标题数据列表
         *
         * @return
         */
        private List<String> getTitleDatas() {
            List<String> titleArray = new ArrayList<String>();
            for (int i = 0; i < 30; i++) {
                titleArray.add("程序员小冰" + i + "个item");
            }
            return titleArray;
        }
    
        /**
         * 滚动ListView到指定位置
         *
         * @param pos
         */
        private void setListViewPos(int pos) {
            if (android.os.Build.VERSION.SDK_INT >= 8) {
                myListView.smoothScrollToPosition(pos);
            } else {
                myListView.setSelection(pos);
            }
        }
    
        @Override
        public void onClick(View v) {
            // TODO Auto-generated method stub
            switch (v.getId()) {
                case R.id.top_btn:// 点击按钮返回到ListView的第一项
                    setListViewPos(0);
                    break;
            }
        }
    
    }
    
    

    好了,教程到此结束。如果此文章帮到了你,欢迎点赞。

    姊妹篇:Scrollview返回顶部,快速返回顶部的功能实现详解链接:
    http://blog.csdn.net/qq_21376985/article/details/52511303
    源代码需要的可以去
    (AndroidStudio版)github下载地址:
    https://github.com/QQ986945193/DavidToTopListView

    展开全文
  • 一、CoordinatorLayout返回顶部: CoordinatorLayout.Behavior behavior = ((CoordinatorLayout.LayoutParams) indexAppBar.getLayoutParams()).getBehavior(); if (behavior instanceof AppBarLa...
  • Android回到底部和返回顶部实现

    千次阅读 2016-04-05 09:16:06
    效果准备四张图片资源 **首先XML布局 我们采用FrameLayout布局 代码:** <FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent
  • android开发中,常常会遇到这样...这对客户来说体验可能不够好,如何让这一页面显示顶部? 可以在布局文件中添加两行代码:android:focusable=true android:focusableInTouchMod=true <LinearLayout xmlns:andro
  • 先看下实现的效果,没效果什么都白扯 下面直接上方法: //目标项是否在最后一个可见项之后 ... private boolean mShouldScroll;... //目标项是否在最后一个可见项之后 private boolean mShouldScroll;...
  • 不知道大家在刷微博时,有没有遇到过,刷新太多,想返回顶部看之前的微博的情况。其实,单击顶部的ActionBar能返回顶部。而不用一直向下拉。 废话不多说,讲讲Android中怎么实现这一功能。 首先,要给ActionBar...
  • 效果 准备四张图片资源 首先XML布局 我们采用FrameLayout布局代码: <?xml version="1.0" encoding...FrameLayout xmlns:android="http://schemas.android.com/apk/res/android" ... android:layout_width...
  • //获取到第一个item的显示的下标 不等于0表示第一个item处于不可见状态 说明列表没有滑动到顶部 显示回到顶部按钮 int firstVisibleItemPosition = manager.findFirstVisibleItemPosition(); // 当不滚动时 if ...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 28,667
精华内容 11,466
关键字:

安卓返回顶部