博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
实战Android 上推下拉——隐藏、显示ActionBar
阅读量:7014 次
发布时间:2019-06-28

本文共 3123 字,大约阅读时间需要 10 分钟。

在很多的APP设置中都会有:根据用户的手势上推或下拉页面列表,然后隐藏或显示ActionBar。这样子可以提供用户一个更加友好的界面,增强用户体验。

实践界面效果图:

这里刚刚开始的时候actionbar是全部显示的,随着列表慢慢往上推,actionbar渐渐隐藏,下拉的时候渐渐显示出来。给用户更加友好的视觉效果。

自定义ScrollView

MyScrollView

public class MyScrollView extends ScrollView {    private OnTransListener mTransListener;    public void setTransListener(OnTransListener transListener) {        mTransListener = transListener;    }    public MyScrollView(Context context) {        super(context);    }    public MyScrollView(Context context, AttributeSet attrs) {        super(context, attrs);    }    public MyScrollView(Context context, AttributeSet attrs, int defStyleAttr) {        super(context, attrs, defStyleAttr);    }    @Override    protected void onScrollChanged(int l, int t, int oldl, int oldt) {        super.onScrollChanged(l, t, oldl, oldt);        if (mTransListener != null) {            int scrollY = getScrollY();            int height = getContext().getResources().getDisplayMetrics().heightPixels;            Log.i("tags", "scrollY:" + scrollY);            Log.i("tags", "height:" + height);            if (scrollY < height / 3f) {                //alpha=滑出去的高度/(screen_height/3f)                mTransListener.trans(1 - scrollY / (height / 4f));            }        }    }    public interface OnTransListener {        void trans(float alpha);    }}复制代码

自定义一个ScrollView,在ScrollView滑动的时候会不停的回调onScrollChanged方法,我们看可以在onScrollChanged里面获取滑动的高度,然后根据高度来设置alpha值,通过alpha来改变actionbar的alpha。这里还需要设置回调OnTransListener,使用时只需要设置自定义的ScrollView的OnTransListener回调即可。

xml布局

复制代码

这里布局需要注意的是:

1)Toolbar需要盖在自定义ScrollView上面。

2)自定义ScrollView需要设置一下属性

android:clipChildren="false"android:clipToPadding="false"android:paddingTop="?attr/actionBarSize"复制代码

设置ActionBar的alpha值

public class ToolBarActivity extends AppCompatActivity {    private Toolbar mToolbar;    private MyScrollView mScrollView;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_tool_bar);        mToolbar = (Toolbar)this.findViewById(R.id.tool_bar);        setSupportActionBar(mToolbar);        mToolbar.setNavigationOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View view) {            }        });        mScrollView = (MyScrollView)this.findViewById(R.id.scrollView);        mScrollView.setTransListener(new MyScrollView.OnTransListener() {            @Override            public void trans(float alpha) {                Log.i("tag","alpha:"+alpha);                mToolbar.setAlpha(alpha);            }        });    }}复制代码

在activity中直接设置MyScrollView的回调方法setTransListener,在回调里面设置ActionBar的alpha值即可。

这样就可以完成根据上推或下拉列表来隐藏或显示ActionBar了。

转载地址:http://plqtl.baihongyu.com/

你可能感兴趣的文章
Java常考面试题(四)
查看>>
前端学数据库之记录操作
查看>>
学习Javascript闭包(Closure)
查看>>
【Todo】git的fast forward & git命令学习 & no-ff
查看>>
如何远程关闭一个ASP.NET Core应用?
查看>>
共享内存mmap学习 及与 shmxxx操作的区别
查看>>
你性格那么软,总是经常改变想法
查看>>
Summary of Critical and Exploitable iOS Vulnerabilities in 2016
查看>>
NeHe OpenGL教程 第十七课:2D图像文字
查看>>
查看Linux系统版本与位数
查看>>
更换CentOS7的下载源为阿里云
查看>>
退出Android程序时清除所有activity的实现方法
查看>>
eclipse注释模板设置(未整理)
查看>>
Hibernate框架 主配置文件(Hibernate.cfg.xml)基本
查看>>
学习SpringMVC——从HelloWorld开始
查看>>
Say Hello to ConstraintLayout
查看>>
awk打印指定列以后的所有内容
查看>>
代码16
查看>>
用 kGDB 调试 Linux 内核
查看>>
ActiveMQ发布-订阅消息模式
查看>>