位置: 编程技术 - 正文

Android:菜单栏Menubar跟随ListView滑动隐藏和显示(安卓中的菜单)

编辑:rootadmin

推荐整理分享Android:菜单栏Menubar跟随ListView滑动隐藏和显示(安卓中的菜单),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:android 菜单,android 菜单栏,android 菜单栏,android菜单图标,android 菜单栏,android选项菜单栏变空白了,android选项菜单栏变空白了,android 菜单栏,内容如对您有帮助,希望把文章链接给更多的朋友!

使用过Google Play Store应用或者Google&#;应用的人都知道,其ActionBar能随着ListView的滑动而相应的隐藏或者显示。效果看起来很不错,为此,我笨拙的模仿了一个类&#;的效果,不知道有没有更好的办法。

先上主布局activity_main:

[html] view plaincopy<RelativeLayout xmlns:android=" xmlns:tools=" android:layout_width="match_parent" android:layout_height="match_parent" tools:context="com.beak.music.ui.MainActivity"> <ListView android:id="@&#;id/main_list_view" android:layout_width="fill_parent" android:layout_height="fill_parent" /> <android.support.v7.widget.Toolbar android:id="@&#;id/main_bar" android:layout_width="fill_parent" android:layout_height="wrap_content" android:background="@color/std_color_A" /> </RelativeLayout> 注意这里的Toolbar,我们将会用这个Toolbar来替换原来的的actionBar。

现在是MainActivity.java里的代码:

[java] view plaincopypublic class MainActivity extends BaseActivity{ private static final String TAG = MainActivity.class.getSimpleName(); private Toolbar mMainToolbar = null; private ListView mMainListView = null; private float mStartY = 0, mLastY = 0, mLastDeltaY; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); mMainToolbar = (Toolbar)this.findViewById(R.id.main_bar); this.setSupportActionBar(mMainToolbar); mMainListView = (ListView)this.findViewById(R.id.main_list_view); final View header = LayoutInflater.from(this).inflate(R.layout.layout_header, null); mMainListView.addHeaderView(header); mMainListView.setAdapter(new AudioAdapter(this)); mMainListView.setOnTouchListener(new View.OnTouchListener() { @Override public boolean onTouch(View v, MotionEvent event) { final float y = event.getY(); float translationY = mMainToolbar.getTranslationY(); switch (event.getAction()) { case MotionEvent.ACTION_DOWN: // Log.v(TAG, "Down"); mStartY = y; mLastY = mStartY; break; case MotionEvent.ACTION_MOVE: float mDeltaY = y - mLastY; float newTansY = translationY &#; mDeltaY; if (newTansY <= 0 && newTansY >= -mMainToolbar.getHeight()) { mMainToolbar.setTranslationY(newTansY); } mLastY = y; mLastDeltaY = mDeltaY; // Log.v(TAG, "Move"); break; case MotionEvent.ACTION_UP: ObjectAnimator animator = null; Log.d(TAG, "mLastDeltaY=" &#; mLastDeltaY); if (mLastDeltaY < 0 && mMainListView.getFirstVisiblePosition() > 1) { Log.v(TAG, "listView.first=" &#; mMainListView.getFirstVisiblePosition()); animator = ObjectAnimator.ofFloat(mMainToolbar, "translationY", mMainToolbar.getTranslationY(), -mMainToolbar.getHeight()); } else { animator = ObjectAnimator.ofFloat(mMainToolbar, "translationY", mMainToolbar.getTranslationY(), 0); } animator.setDuration(); animator.start(); animator.setInterpolator(AnimationUtils.loadInterpolator(MainActivity.this, android.R.interpolator.linear)); // Log.v(TAG, "Up"); break; } return false; } }); } } 主要的问题是ListView滑动手势检测和Toolbar里的动画。Android:菜单栏Menubar跟随ListView滑动隐藏和显示(安卓中的菜单)

一开始,先用我们自己的Toolbar替换原来的ActionBar,注意,在你的AppTheme中,windowActionbar这一项要设置为false才能用我们自己的去替换原来的,不然运行会报错,然后给Listview一个与Toolbar等高的headerView。然后再设置Touch事件的监听,

在onTouch方法的ACTION_MOVE分支中,我们计算出本次触发move事件与上次触发move或者down事件时候,我们的触发点的位置变化量-mDeltaY,然后计算出一个相应的translationY,经过与Toolbar高度比较,判断出新的translationY是否合法,合法,则用setTranslationY方法,给Toolbar赋&#;。

触发UP事件:

当触发了UP事件后,就要,我们就要用一个动画,来过度一下。先判断滑动方向,方向向上,则向上滑动,向下,则向下滑动。

android studio project code 代码在这里,不过是Android studio代码,没有写ADT代码

转载:

自定义videoview实现全屏播放 最近的项目中需要横屏播放视频的功能,本来是想通过设置videoview宽高的方式来实现,不过后来发现效果不佳,遂决定自定义一个videoview来解决这个问

Android AsyncTask AsyncTask确实简单易用,基本上写登陆,注册这种简单的网络访问,可以使用它,但对于多线程这个确实不太好。关于AsyncTask的优缺点可以百度搜索下。

android sqlit增删改查 一、使用嵌入式关系型SQLite数据库存储数据在Android平台上,集成了一个嵌入式关系型数据库——SQLite,SQLite3支持NULL、INTEGER、REAL(浮点数字)、TEXT(字

标签: 安卓中的菜单

本文链接地址:https://www.jiuchutong.com/biancheng/385102.html 转载请保留说明!

上一篇:android开发扩大CheckBox点击监听范围(安卓开发 内存)

下一篇:自定义videoview实现全屏播放(webview自定义视频播放器)

  • 残保金漏报的财务怎么办
  • 企业所得税年度申报
  • 员工离职补偿需要计提吗
  • 应付债券转为实际债务
  • 国际贸易公司注册需要什么条件海南
  • 税金及附加怎么计提
  • 什么企业没有销售费用
  • 装修职工宿舍用的瓷砖,灯具等计入什么科目?
  • 车辆购置税计税依据包括
  • 小规模收到货运专用发票
  • 增值税发票当期能抵扣吗
  • 公司职工买房有补贴吗
  • 年所得12万元以上的纳税人,在纳税年度终了后
  • 国有资产无偿划转实施方案
  • 小规模纳税人可以享受小微企业吗
  • 法人变更后的涉税问题
  • 车辆购置税完税证明电子版二维码怎么扫
  • 什么发票可以抵成本
  • 员工收到货款不交公司,法律规定
  • 成本法追加投资交易费用
  • 其他应付款下的固定资产怎么报废
  • 商品损耗怎么做会计分录
  • 苹果电脑记笔记
  • 联想笔记本在bios中怎么把图标和字变大
  • 农民工工资保证金退还条件
  • 广告公司发生的费用要计入主营业务成本吗
  • 捐赠支出如何做账
  • 克洛格森林大克洛格
  • 商品流通企业库存商品的核算方法主要有
  • 购入专利权属于
  • 前端项目如何部署到服务器
  • 公司给员工的购房补贴
  • 企业微信如何微信认证
  • 带息票据和不带息票据怎么区分
  • 未入账的发票可以抵扣吗
  • 免税收入和免征
  • 公司分红给个人
  • 其他应收款可以直接平账吗
  • 建筑安装的扩展性是指
  • 法人向公司账户打款合法吗
  • 开具定额发票应如何做账?
  • 珠宝行业的会计处理方式
  • 固定资产当月入账当月计提吗
  • 行政单位基建账地质灾害评估报告计哪个科目
  • 将购进药品销售给药品生产企业或药品经营企业的是
  • 低于注册资本转股怎么办
  • 车辆理赔款如何入账
  • 存货报废计入
  • 法人投资属于什么会计科目
  • 胶水属于什么开发工具
  • 直接收到货款也要走应收账款吗
  • 主营业务成本与其他业务成本的区别
  • 发票监制章是什么章图片
  • 发票作废后对方还能认证吗
  • 利润表中的营业收入怎么算出来的
  • 数据库性能优化方法论和最佳实践
  • 分页存储过程包括
  • Windows Server 2016预览版10514系统镜像下载泄露
  • 微软推送windows 11
  • ubuntu怎么说
  • centos桌面调出命令行
  • WINDOWS系统还原主要作用
  • win10每周更新
  • centos 7 dns
  • 将Linux中systemd的单元配置实例化的方法
  • 一键配置天赋的台词
  • python多核并行处理
  • k-means聚类算法例题
  • javascript的常用数据类型
  • 安装两个linux
  • U3DPlayer UnityWebPlayer动态改变src
  • a标签跳转本地html页面
  • android原生框架
  • 税务总局和税务局区别
  • 期间费用如何分摊到成本中
  • 残疾人在国企有补贴吗
  • 矿产资源税税率2020年
  • 屠宰场需要环评吗
  • 金三是什么鱼竿?
  • 高山白茶和普通白茶的区别
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设