android实现悬停效果代码,Android StickListView实现悬停效果
先看看效果图:
实现思路:
监听ListView的滑动,等目的项为列表第一个可见的ItemView时,添加一个一个的布局,产生悬停效果
实现代码:
public class CustomViewAcyivity extends BaseActivity {
Toolbar toolbar;
WindowManager mWindowManager;
WindowManager.LayoutParams mWindowLayoutParams;
TextView mTv;
boolean isShowing;//是否正在显示
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_custom_view);
mWindowManager = (WindowManager) getSystemService(Context.WINDOW_SERVICE);
List list = new ArrayList<>();
for (int i = 0; i < 30; i++) {
list.add("我是第" + (i + 1) + "个选择项");
}
toolbar = $(R.id.toolbar);
ListView listView = $(R.id.view_list);
listView.setAdapter(new ArrayAdapter<>(this, R.layout.item_text, list));
listView.setOnScrollListener(new AbsListView.OnScrollListener() {
@Override
public void onScrollStateChanged(AbsListView view, int scrollState) {
}
@Override
public void onScroll(AbsListView view, int firstVisibleItem, int visibleItemCount, int totalItemCount) {
if (firstVisibleItem > 8) {//滑动到目的项时,显示悬停布局
if (!isShowing)
show();
} else {
if (isShowing)
hide();
}
}
});
}
//显示悬停布局
public void show() {
isShowing = true;
mWindowLayoutParams = new WindowManager.LayoutParams();
mWindowLayoutParams.format = PixelFormat.TRANSLUCENT; //图片之外的其他地方透明
mWindowLayoutParams.gravity = Gravity.TOP;
mWindowLayoutParams.y = toolbar.getHeight() - SystemUtil.getStatusHeight(this);//设置悬停布局显示的Y坐标
mWindowLayoutParams.width = WindowManager.LayoutParams.MATCH_PARENT;
mWindowLayoutParams.height = UnitUtil.dp2px(this, 50);//设置悬停布局显示的高度
mWindowLayoutParams.flags = WindowManager.LayoutParams.FLAG_NOT_FOCUSABLE
| WindowManager.LayoutParams.FLAG_NOT_TOUCHABLE;
//设置悬停布局,为了看起来是悬停效果,布局的内容要设置成与ItemView一致
mTv = new TextView(this);
mTv.setGravity(Gravity.CENTER);
mTv.setBackgroundColor(getResources().getColor(R.color.white));
mTv.setTextSize(UnitUtil.px2sp(this, UnitUtil.dp2px(this, 16)));
mTv.setText("我是第10个选择项");
//添加悬停布局
mWindowManager.addView(mTv, mWindowLayoutParams);
}
//隐藏悬停布局
public void hide() {
if (mTv != null) {
isShowing = false;
mWindowManager.removeView(mTv);
mTv = null;
}
}
}
布局代码:
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
android:id="@+id/view_list"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持脚本之家。
android实现悬停效果代码,Android StickListView实现悬停效果相关推荐
- android 仿ios动画效果代码,Android仿IOS上拉下拉弹性效果的实例代码
用过iphone的朋友相信都体验过页面上拉下拉有一个弹性的效果,使用起来用户体验很好:Android并没有给我们封装这样一个效果,我们来看下在Android里如何实现这个效果.先看效果,感觉有些时候还 ...
- android桌面雪花效果代码,Android营造雪花和雨滴浪漫效果
本文在实现雪花效果的基础上,根据漫天飞舞雪花,实现下雨天场景的效果,使用eclipse android 版本,具体内容如下 雪花效果图: 具体代码: 1.漫天飞舞的雪花主要代码 SnowView pa ...
- Android编写界面交互代码,android仿音悦台页面交互效果实例代码
概述 新版的音悦台 APP 播放页面交互非常有意思,可以把播放器往下拖动,然后在底部悬浮一个小框,还可以左右拖动,然后回弹的时候也会有相应的效果,这种交互效果在头条视频和一些专注于视频的app也是很常 ...
- Android微信通讯录界面代码,Android中使用Expandablelistview实现微信通讯录界面
之前的博文<Android 中使用ExpandableListView 实现分组的实例>我简单介绍了使用ExpandableListView实现简单的好友分组功能,今天我们针对之前的所做的 ...
- Android运行ListView的代码,Android ListView组件详解及示例代码
Android 列表组件 ListView 列表组件是开发中经常用到组件,使用该组件在使用时需要为它提供适配器,由适配器提供来确定显示样式和显示数据. 下面看一个例子: 新建一个项目Lesson8_L ...
- android html 字体颜色代码,Android TextView通过解析html显示不同颜色和大小
先贴一张效果图 效果 介绍 通过SpannableString.SpannableStringBuilder可以很方便的给TextView加上各种各样的样式,比如不同的颜色和大小,这里就不多说了,具体 ...
- android 图片变颜色代码,Android -对图片Drawable进行变色
Android 图片DrawableCompat利用setTint()对图片Drawable进行变色 1.利用color资源对Drawable变色 Drawable对象的来源不限制,可以是从资源get ...
- opengl android 纹理贴图 代码,Android 使用opengl es的纹理贴图白屏问题请教。
各位大侠好: 我在使用open gl es的做显示的时候,发现一个问题,请各位帮助一下,谢谢. 环境:opengl es 1.x,2D的模式显示纹理图片. 在LG-P990,HTC-C510E上显示附 ...
- android下拉框代码,Android下拉列表spinner的实例代码
spinner组件有点类型于HTML中的下拉框的样子,让用户每次从下拉框中选取一个,本文为大家分享了Android下拉列表spinner的具体实现代码,供大家参考,具体内容如下 mian.xml xm ...
- android实时监控屏幕代码,Android 屏幕切换监听的实例代码
昨天,我试着在屏幕切换时,使View显示在不同的位置,在网上搜索了一些资料,自己做了一段时间,终于完成了功能. 由于屏幕切换会调用activity的各个生命周期,所以需要在manifest的activ ...
最新文章
- ArcGIS 基础11-专题制图
- 四个好用却可能不为人所熟知的Pandas函数,建议收藏!!!
- 什么是 TypeScript 的 Module Augmentation
- 感谢支持,超预期重印并加码
- 小学有学计算机课程,如何进行小学计算机课程有效教学.doc
- 【转】[完全免费] 在线UML Sequence Diagram 时序图工具 - 教程第3部分
- mysql初始化实例报错_初始化 mysql时报错
- java.net cidr接口_CIDR - xiaohuazi - 博客园
- python 爬虫抓取网页数据导出excel_如何用excel实现网页爬虫
- SecKill——一款超级好用的抢单软件
- 是谁来自江河湖海,却囿于“跨界”
- 用C#实现一个简易的软件光栅化渲染器
- springboot依赖lombok插件、lombok常用注解
- 计算机二级考试是考什么?
- 高精度阶乘和 高精度算法(c语言)
- 一个老股民的炒股心得
- 如何判断对方列表里是不是好友_怎么判断QQ是不是被对方删除好友了_怎么知道对方QQ是否把我删了...
- linux bcm43142无线网卡驱动安装,Centos7.7安装bcm43142(博通)无线网卡驱动(示例代码)...
- 并行计算(二):并行模型的分类
- Linux下oracle显示问号,oracle数据库显示问号
热门文章
- 【推荐工具】connected papers:文献知识图谱神器
- safe mode bypass and rooting
- Project:解决问题:在Microsoft project2016中如何编辑一周七天工作日
- sprintf函数详细解释
- mysql统计每半小时内的数据(查寻某段时间内的数据)
- 不用插件,如何将tif格式的影像精准导入到CAD中?
- Java实现凯撒密码、维吉尼亚密码、双换位密码、RC4算法加密
- SAP的萨班斯法案SOA解决方案
- 电脑蓝屏,错误代码为“KERNEL STACK INPAGE ERROR”
- sulley测试环境搭建的相关总结